2013-06-01 5 views
0

У меня есть следующий код:PHP Shell_Exec не работает?

$output = shell_exec("./Program $var1 $var2"); 
echo "<pre>$output</pre>"; 

Это не работает, но

$output = shell_exec("ls"); 
echo "<pre>$output</pre>"; 

работает.

$output = shell_exec("top"); 
echo "<pre>$output</pre>"; 

также не работает например. Зачем?

ответ

1

Это, безусловно, проблема с разрешениями. Убедитесь, что файл, который вы пытаетесь выполнить с помощью команды ./ из вашего скрипта, имеет + x perms. Вот предыдущий поток о предоставлении файлов исполняемых разрешений: Creating executable files in Linux.

Если у файла уже есть права + x, это может быть проблема с вашим скриптом, выполняющим команды. В любом случае, если вы можете запустить ls, но не ./ и сверху, должны быть разрешения.

Редактировать: Ссылка, которую я дал, я понимаю, у меня много информации о сценариях Perl и bash. Важной частью является то, что команда, чтобы сделать исполняемый файл является

chmod +x ProgramName 
+0

Нет, это не исправить:/спасибо за помощь, хотя – Orca

+0

Любые другие предложения – Orca

+0

Hm. Когда вы говорите, что это не работает, можете ли вы включить в свой вопрос, какую ошибку он дает? Или он просто печатает пустую строку? –

0

В зависимости от содержания $ var1 и $ var2 вам, возможно, потребуется сделать escapeshellarg вызов вокруг него.

$output = shell_exec("./Program ".escapeshellarg($var1)." ".escapeshellarg($var2)); 

, даже если он не работает, это может быть хорошей идеей. Также убедитесь, что ваш Путь верен. Может быть, с file_exits('./Program'); check

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