Вот мой код:
$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 не генерируется. Однако, если я выведу команду и скопирую ее в терминал, она будет работать. Как мне это решить?
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 действительно живет для всего примера кода в этом ответе.
Других решений пока нет …