Php 使用shell_exec时连接被拒绝

Php 使用shell_exec时连接被拒绝,php,mysql,Php,Mysql,我正试图通过shell\u exec使用脚本连接到数据库,但我得到: mysqli::mysqli():(HY000/2002):没有这样的文件或目录 在不使用shell\u exec的情况下使用脚本时(例如:通过提交按钮),它可以正常工作 在调用方php文件上: shell_exec('php /Users/Desktop/save.php param') $a=$argv[1]; saveonDB($a); 称为php文件: shell_exec('php /Users/Desktop

我正试图通过
shell\u exec
使用脚本连接到数据库,但我得到:

mysqli::mysqli():(HY000/2002):没有这样的文件或目录

在不使用
shell\u exec
的情况下使用脚本时(例如:通过提交按钮),它可以正常工作


在调用方php文件上:

shell_exec('php /Users/Desktop/save.php param')
$a=$argv[1];
saveonDB($a);
称为php文件:

shell_exec('php /Users/Desktop/save.php param')
$a=$argv[1];
saveonDB($a);
我真的不知道在通过
shell\u exec
调用函数时为什么不工作。正在正确传递参数

谢谢


更新:

我简化了这个例子:

connection.php:

function connect()
{
    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname= "db";

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    else{
        echo "connected";
    }

}

connect();
caller.php:

    echo exec ("php /Users/Desktop/connection.php");
直接执行connection.php时,会显示:

“已连接”

从caller.php执行时,它将保持:

“连接失败:没有这样的文件或目录”


我只是想知道发生了什么。在通过
shell\u exec
php执行时,似乎使用了
mysql.sock
。使用MAMP时,连接端口不同。将端口放在服务器名称参数上可以解决此问题


感谢您的所有输入。

saveonDB()
不是内置函数。它的定义是什么?您可能会遇到这样一种情况:当相同的连接在
new mysqli()
上工作时,无法通过shell_exec找到连接套接字。请发布更多代码。shell_exec可能没有您通常拥有的完整shell环境。检查您所引用的路径,查看是否可以找到您访问的所有文件。代码已更新,请查看