2012-07-04 5 views
1

Когда я ввожу следующее в командную строку оболочки, он преобразует файл .docx в файл .pdf.exec() ничего не делает

HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx 

Но тогда, когда я запускаю следующий скрипт PHP, ничего не происходит. Я установил/tmp/ayb разрешения для 777, но все равно не пошел. Есть идеи? Спасибо

<?php 
    $cmd='HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx'; 
    exec($cmd); 
?> 

РЕДАКТИРОВАТЬ. Следующий скрипт производит следующие результаты. Обратите внимание, что exec() занимает некоторое время, когда shell_exec() не делает этого.

<?php 
    $cmd='HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx'; 
    echo($cmd); 
    exec($cmd,$out,$ret); 
    echo('<br />exec()<br />$out='.print_r($out,1).'<br />$ret='.$ret); 
    $out=shell_exec($cmd); 
    echo('<br />shell_exec()<br />$out='.print_r($out,1)); 
?> 

Выход

HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx 
exec() 
$out=Array () 
$ret=134 
shell_exec() 
$out= 
+3

Укажите полный путь к '/ path/to/libreoffice3.5'. Он не может быть использован в '$ PATH' PHP. –

+0

Я просто проверяю, вы не в безопасном режиме, не так ли? – JRSofty

+0

@ Майкл. Спасибо, но никакой разницы. – user1032531

ответ

0

ли Apache имеют правильные права доступа пользователей? Если вы вошли в SSH с правами администратора, у вас будет полный доступ к командам; поэтому вам может потребоваться обновить разрешения Apache для определенных каталогов.

Возможно, вам также стоит попробовать shell_exec().

Это может быть проблема с каталогом, как указал Майкл. Укажите путь к полному каталогу, а не относительный.

+0

Когда я вхожу в командную оболочку, я вошел в систему под именем root. Обратите внимание, что я изменил разрешения tmp/ayb на 777, пытаясь облегчить это. Существуют ли другие типы «разрешений», которые мне не хватает? Кроме того, я уже пробовал shell_exec(), но никакой разницы. Благодаря! – user1032531

+0

Кроме того, чтобы что-то изменить, я попробовал следующий PHP и работал: exec ('cp /tmp/ayb/document_16_64.docx/tmp/ayb/document_16_64_2.docx'); – user1032531

Смежные вопросы