Запуск pdftohtml с PHP — не удается найти результирующий HTML-файл

#php #system

#php #система

Вопрос:

У меня есть PHP-скрипт, который запускает эту команду:

 system("pdftohtml -i -noframes /home/myacc/pdfs/test.pdf");
 

Когда я запускаю это из public_html, html-файл с именем test.html успешно создан и помещен в папку public_html. Однако, когда я запускаю это из задания cron за пределами public_html, ни в одной папке на сервере не создается HTML-файл.

Кто-нибудь может помочь мне найти, где будет находиться результирующий HTML-файл?

Спасибо.

Комментарии:

1. Нет. — Есть ли у PHP-скрипта разрешение на запись в текущий каталог? Проверил ошибку. журнал еще не зарегистрирован? Почему бы вам просто не указать выходное имя файла?

2. Самое простое, что вы могли бы сделать, это сопоставить ваш сервер (встроенная опция, если вы используете Windows 7, в противном случае используйте netdrive), и тогда вы сможете искать файлы на сервере так же, как вы ищете файлы на локальном диске. В любом случае, я бы рекомендовал вам опубликовать полный текст — в большинстве случаев это помогает решить проблему

3. @mario насколько я вижу, я не могу указать имя выходного файла с помощью pdftohtml — он всегда будет выводить HTML-файл в рабочем каталоге. Проблема в том, где находится рабочий каталог, если скрипт запускается как задание cron? я проверил разрешения, они в порядке, и журнал ошибок не создается, так что он должен быть где-то.

4. Это pdftohtml input.pdf output.html согласно manpage. И, конечно, было бы разумно указать каталог заданий cron вместо того, чтобы полагаться на неопределенные значения (либо /tmp, либо $HOME). tinyurl.com/5wannzg

Ответ №1:

Проблема заключается в том, как работает cronjob. Попробуйте использовать абсолютное местоположение для pdftohtml.

Кроме того, из вашего комментария вы не можете изменить способ записи выходных данных pdftohtml. Однако есть способ обойти это. Это с помощью пользовательского сценария оболочки:

 #!/bin/bash
cd /path/to/output/
/path/to/pdftohtml -i -noframes /home/myacc/pdfs/test.pdf
 

Комментарии:

1. спасибо за ваш ответ. Я понимаю, что логика заключается в том, чтобы изменить каталог на путь к выводу, но не могли бы вы пояснить, как я мог бы сделать это в PHP-скрипте? Могу ли я сделать: system("cd /path/to/output/") ?

2. хм … если вы настаиваете на использовании system() , я думаю, что правильный способ — это: system("cd /path/to/output/;/path/to/pdftohtml -i -noframes /home/myacc/pdfs/test.pdf");