使用shell_exec时连接被拒绝

时间:2016-01-01 19:50:33

标签: php mysql

我尝试使用shell_exec脚本连接到数据库,但我得到了:

  

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

当使用没有shell_exec的脚本时(例如:按提交按钮),它可以很好地工作。

在调用者php文件中:

shell_exec('php /Users/Desktop/save.php param')

称为php文件:

$a=$argv[1];
saveonDB($a);

我真的不知道为什么在shell_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执行时,它会保持:

  

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

1 个答案:

答案 0 :(得分:0)

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

感谢所有输入。