Когда я пытаюсь запустить сценарий оболочки с exec
и shell_exe
, ничего не происходит! Когда я бегу с этими командами ls
или whoami
все работы.Не удается запустить скрипт оболочки в PHP
Что это может быть?
Когда я пытаюсь запустить сценарий оболочки с exec
и shell_exe
, ничего не происходит! Когда я бегу с этими командами ls
или whoami
все работы.Не удается запустить скрипт оболочки в PHP
Что это может быть?
Вы эхо выходе?
echo exec('ls');
У вас есть safe_mode включен?
phpinfo();
Когда да: (из инструкции)
Примечание: Когда безопасный режим включен, вы можете выполнять только файлы в safe_mode_exec_dir. По практическим соображениям в настоящее время не разрешено использовать .. на пути к исполняемому файлу.
Попытка вызвать Exec с
exec('...pathtoyourbashscript...', $out, $return);
Тогда
echo $return;
Если он показывает 127
подмигнули вероятно, что путь неправильно.
Также проверьте разрешения. Пользователь «nobody», вероятно, является пользователем Apache, которому необходимы права доступа и выполнения сценария.
Вы можете изменить права доступа, запустив
chmod 755 pathtouyourscript
Это означает что-то вроде: "Я не возражаю, если другие люди читают или запустить этот файл, но только я должен быть в состоянии изменить его.
'echo exec ('ls');' работает хорошо. Я проверил с 'phpinfo()', и его показывает, что ** безопасный режим выключен **. В Configure Command я увидел ** '- enable-safe-mode' ** – Oleg
, чем кажется, что путь неправильный. см. мои правки выше. –
Его возврат ** 1 **. если это помогает, когда я проверяю, кто является пользователем (whoami), он показывает ** никому **. – Oleg
Если вы используете Apache, убедитесь, что у пользователя Apache есть необходимые разрешения для выполнения php-файла.
Dale Smith, Как я могу проверить его? у меня есть все разрешения, которые я думаю ... – Oleg
Вы можете использовать отражение, чтобы выяснить, была ли функция отключена с помощью disable_functions
.
Я использовал 'ReflectionFunction' ... это показывает ** Включено ** – Oleg
Если программа основанная на веб-интерфейсе для Linux, попробуйте сделать php-файл для обработки оболочки. и файл оболочки для обработки PHP ..
Например: runAllShell.php файл может содержать цикл .:
<?php
// Developed by A T.
// Count the files
$directory = '/put/directory/path_here/';
$files = glob($directory . '*.*');
if ($files !== false)
{
$filecounter = count($files);
}
else
{
echo "No Files were found";
}
$fileCount = $filecounter;
// Start the index
$fileNumber = 1;
while($fileNumber <= fileCount){
shell_exec('$fileNumber . ".sh"');
// get some feedback
echo "The ".$fileNumber." file has been excecuted";
// increment file number
$fileNumber++;
}
?>
убедитесь, что все .sh файлы в директории numericaly заказана для это для работы, то есть: 1.sh 2.sh 3.sh и так далее.
С уважением, AT.
Пожалуйста, добавьте пример того, как вы пытаетесь запустить его. –
Вы пробовали полностью квалифицированный PATH (EX: «/ usr/local/myscript»)? – paulsm4
http: // whathaveyoutried.com/ –