Php shell_execute 不工作
Php shell_execute not working
我有一个问题,我无法 shell_exec(),但它就是行不通。 shell_exec() 有问题还是它不能 运行 myfile.sh 不知何故..
如果我 运行 在 shell 中编码,它工作正常。我的 php 在安全模式下不会 运行,我确实从 php.ini 文件中检查过它,我也检查过 disable_functions。
我的 php 代码 returns 现在只是空的。我也尝试过测试目的:
$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...
我想念这里的任何提示,下一步要看什么或做什么。
代码中可能有一些错误,我没有复制粘贴。
这里要检查两件事:
先判断php.ini
中是否禁用了exec和shell_exec
disable_functions = 执行
exex() 接受命令但没有文件,如果我没记错的话,而不是简单地添加你应该尝试的文件名:
exec(dirname(FILE) . '/myfile.sh');
使用正确的目录并实际传递命令而不是文件名。
您可以使用绝对路径或相对路径。对于相对路径,当前目录通常是 PHP 文件的目录。如果即使使用绝对路径也无法访问脚本,则文件系统访问权限可能存在问题。请记住 PHP 脚本通常作为 Web 服务器的(系统)用户帐户执行。
您的 shell 脚本应存储在您的应用程序树附近或内部的某个位置,以便您可以授予对您的 PHP 脚本(即您的网络服务器)的访问权限,而不会妥协文件系统的安全性。
我有一个问题,我无法 shell_exec(),但它就是行不通。 shell_exec() 有问题还是它不能 运行 myfile.sh 不知何故.. 如果我 运行 在 shell 中编码,它工作正常。我的 php 在安全模式下不会 运行,我确实从 php.ini 文件中检查过它,我也检查过 disable_functions。 我的 php 代码 returns 现在只是空的。我也尝试过测试目的:
$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...
我想念这里的任何提示,下一步要看什么或做什么。
代码中可能有一些错误,我没有复制粘贴。
这里要检查两件事:
先判断php.ini
中是否禁用了exec和shell_execdisable_functions = 执行
exex() 接受命令但没有文件,如果我没记错的话,而不是简单地添加你应该尝试的文件名:
exec(dirname(FILE) . '/myfile.sh');
使用正确的目录并实际传递命令而不是文件名。
您可以使用绝对路径或相对路径。对于相对路径,当前目录通常是 PHP 文件的目录。如果即使使用绝对路径也无法访问脚本,则文件系统访问权限可能存在问题。请记住 PHP 脚本通常作为 Web 服务器的(系统)用户帐户执行。
您的 shell 脚本应存储在您的应用程序树附近或内部的某个位置,以便您可以授予对您的 PHP 脚本(即您的网络服务器)的访问权限,而不会妥协文件系统的安全性。