У меня есть проблема, что я не могу shell_exec (), но он просто не будет работать. Есть ли проблема с shell_exec () или он просто не может как-то запустить myfile.sh ..
Если я запускаю код в оболочке, он работает нормально. Мой php не запускается в безопасном режиме, я проверил его из файла php.ini и также проверил disable_functions.
Мой PHP-код возвращается прямо сейчас ноль. И я попробовал также для целей тестирования:
$result = exec('myfile.sh', $output, $status);
я получил :
array(0){}int(127)
Оба файла имеют права чтения и выполнения chmod 775.
У меня есть файл message.php, на что похоже
<?php
$user = "username";
$pass = "pass";
$from = "from who";
$to = "1234567";
$msg = "test message";
$host="https://web.myurl.ee:portnr/etc/etc";
$handle = curl_init($host);
curl_setopt($handle, CURLOPT_NOBODY, true);
curl_exec($handle);
$res = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($res >= 400){
exit;
}else if($res < 200){
exit;
}else{
if(function_exists('shell_exec') && !ini_get('safe_mode')){
$file = 'myfile.sh';
if(file_exists($file)){
$result = shell_exec($file ."$user $pass $from $to $msg");
var_dump($result);
}else{
echo "No files";
}
}else{
echo "check status";
}
}
?>
и файл myfile.sh выглядит так
#!/bin/sh
if [$# -ne 5 ]; then
echo"jahas"exit 1
fi
etc...
Что мне здесь не хватает, любые советы, что посмотреть или что делать дальше.
В коде может быть несколько опечаток, я не копировал и не вставлял их.
Здесь нужно проверить две вещи:
Сначала определите, отключены ли exec и shell_exec в php.ini
disable_functions = exec
exex () принимает команды и никаких файлов, если я не ошибаюсь, поэтому вместо простого добавления имени файла вы должны попробовать:
Exec (имя_директории (ФАЙЛ) ‘/Myfile.sh’);
Используя правильный каталог и фактически передавая команду, а не имя файла.
Вы можете использовать абсолютный или относительный путь. Для относительных путей текущим каталогом обычно являются файлы PHP. Если вы не можете получить доступ к своим сценариям даже с абсолютным путем, может быть проблема с правами доступа к файловой системе. Имейте в виду, что PHP-скрипты обычно выполняются как системная учетная запись пользователя на веб-сервере.
Сценарии вашей оболочки должны храниться где-то рядом или внутри дерева приложений, чтобы вы могли предоставлять им доступ к своим PHP-сценариям (т. Е. К вашему веб-серверу), не слишком ставя под угрозу безопасность вашей файловой системы.