Php shell_执行不工作
我有一个问题,我不能shell_exec(),但它就是不起作用。shell_exec()是否有问题,或者它无法运行myfile.sh。。 如果我在shell中运行代码,它可以正常工作。我的php不会在安全模式下运行,我确实从php.ini文件中检查了它,我也检查了disable_函数。 我的php代码现在返回空值。我也尝试过测试:Php shell_执行不工作,php,sh,shell-exec,Php,Sh,Shell Exec,我有一个问题,我不能shell_exec(),但它就是不起作用。shell_exec()是否有问题,或者它无法运行myfile.sh。。 如果我在shell中运行代码,它可以正常工作。我的php不会在安全模式下运行,我确实从php.ini文件中检查了它,我也检查了disable_函数。 我的php代码现在返回空值。我也尝试过测试: $result = exec('myfile.sh', $output, $status); 我得到: array(0){}int(127) 这两个文件都有chm
$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";
}
}
?>
#!/bin/sh
if [$# -ne 5 ]; then
echo"jahas"
exit 1
fi
etc...
我在这里错过了什么,有什么建议看什么或者下一步做什么
在代码中可能有一些错误类型,我没有复制粘贴它。这里有两件事需要检查:
使用正确的目录并实际传递命令而不是文件名。您可以使用绝对路径或相对路径。对于相对路径,当前目录通常是PHP文件的。如果即使使用绝对路径也无法访问脚本,则可能存在文件系统访问权限问题。请记住,PHP脚本通常作为web服务器(系统)用户帐户执行
您的shell脚本应该存储在应用程序树附近或内部的某个位置,这样您就可以向PHP脚本(即web服务器)授予对它们的访问权限,而不会对文件系统的安全性造成太大影响。从您调用message.PHP的位置,在sh文件中找不到任何语句?message.php被称为manualy atm/just reload page,myfile.sh应该获取所有参数。您是否尝试使用myfile.sh的完整路径?shell脚本不会执行,因为它与调用的PHP脚本位于同一目录中。是的,bot位于同一目录中。我在PHP.ini中检查过:安全模式为关闭,禁用函数为空。我不能使用exec,因为我还需要传递参数。您是否向exec传递了实际命令?确保目录正常?您是指exec('sh./myfile.sh')?它返回字符串(0)”,现在您确定目录设置正确吗?试试这个例子:exec(dirname('myfile.sh')。/myfile.sh');例如,将myfile.sh与此脚本放在同一目录中。两个文件都在同一目录中,我执行了shell_exec(
\uuu DIR\uu
)/myfile.sh),但仍然相同。