Не могу заставить php exec работать - PullRequest
0 голосов
/ 16 октября 2011

Я боролся с этим уже несколько часов, и я не могу решить это.пробовал exec (), shell_exec () и system ().Ничего не работаетУ меня есть это:

exec("/usr/bin/php /var/www/vhosts/domain.com/httpdocs/shell/send.php >> /var/www/vhosts/domain.com/httpdocs/shell/paging.log &");

send.php просто имеет:

echo 'works';

Но ничего не отображается в журнале.Я погуглил и прочел кое-что здесь, но не могу найти ничего, чтобы помочь.

Я использую php v.5.3.8.безопасный режим включен Я уверен, что это путь к php, но не могу найти, как его найти, поэтому я продолжаю phpinfo ().

exec ('whoami');ничего не делает.Предполагается ли показывать в браузере?или вам что-то напишите?есть идеи?

Ответы [ 3 ]

1 голос
/ 01 февраля 2012
> The last line from the result of the command. If you need to execute 
> a command and have all the data from the command passed directly back
> without any interference, use the passthru() function. To get the output
> of the executed command, be sure to set and use the output parameter.

Я не ищу вывод, и последние два аргумента exec () являются необязательными.В моем случае мне нужно открыть папку на рабочем столе.Этот точный синтаксис работал очень хорошо в MAMP_PRO_1.9.6, но больше не работает в MAMP_PRO_2.0.5 (он не работает)

<?php
    exec("open /path/to/any/folder");   //  BROKEN in Mamp Pro 2.0.5
?>
1 голос
/ 16 октября 2011

Согласно руководству по PHP для функции exec:

Когда включен безопасный режим, вы можете выполнять файлы только в пределах safe_mode_exec_dir.По практическим соображениям в настоящее время запрещено иметь .. компоненты в пути к исполняемому файлу.

Проверка http://php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dir

Кроме того, помните, что пользователь веб-сервера должену вас есть разрешение на запись в файл журнала.

РЕДАКТИРОВАТЬ: Чтобы отключить безопасный режим , проверьте не только файл php.ini , но и конкретные конфигурации виртуальных хостов в вашемвеб-сервер, будь то Apache, NginX или другой.Если вы используете Plesk, найдите httpd.include в vhosts и убедитесь, что для safe_mode там также установлено значение off.

0 голосов
/ 16 октября 2011

Чтобы получить вывод, вам нужно передать второй параметр, или вы можете получить последнюю строку вывода, повторив его.

Из руководства по PHP:

string exec ( string $command [, array &$output [, int &$return_var ]] )

Возвращаемые значения:

Последняя строка результата команды.Если вам нужно выполнить команду и передать все данные из команды обратно без каких-либо помех, используйте функцию passthru ().Чтобы получить вывод выполненной команды, обязательно установите и используйте выходной параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...