Php shell_执行不工作

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

我有一个问题,我不能shell_exec(),但它就是不起作用。shell_exec()是否有问题,或者它无法运行myfile.sh。。 如果我在shell中运行代码,它可以正常工作。我的php不会在安全模式下运行,我确实从php.ini文件中检查了它,我也检查了disable_函数。 我的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";
    }
}
?>
#!/bin/sh
if [$# -ne 5 ]; then
    echo"jahas"
    exit 1
fi
etc...
我在这里错过了什么,有什么建议看什么或者下一步做什么


在代码中可能有一些错误类型,我没有复制粘贴它。

这里有两件事需要检查:

  • 首先确定php.ini中是否禁用了exec和shell_exec

    禁用函数=执行

  • 如果我没有弄错的话,exex()接受命令并且不接受文件,因此您应该尝试添加文件名,而不是简单地添加文件名:

    exec(dirname(文件)./myfile.sh')


  • 使用正确的目录并实际传递命令而不是文件名。

    您可以使用绝对路径或相对路径。对于相对路径,当前目录通常是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),但仍然相同。