PDF2SWF: php exec () работает только в терминале

Вот мой код:

$pdf = '/Users/macbookpro/Desktop/q.pdf';
$swf = '/Users/macbookpro/Desktop/q.swf';

$command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';
exec($command2,$out,$status);
var_dump($output);

Вывод NULL и SWF не генерируется. Однако, если я выведу команду и скопирую ее в терминал, она будет работать. Как мне это решить?

0

Решение

exec запускается как пользователь, выполняющий скрипт. У пользователя Apache, вероятно, нет переменной PATH, указывающей, где искать программы, поэтому вместо

 $command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

Попробуйте добавить местоположение pdf2swf, например:

 $command2 = '/bin/pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

И убедитесь, что у пользователя apache есть разрешение на доступ к исполняемому файлу и разрешение на его выполнение.

 chmod a+x /bin/pdf2swf

Конечно заменить /bin/ с тем, где когда-либо pdf2swf действительно живет для всего примера кода в этом ответе.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]