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环境。检查您所引用的路径,查看是否可以找到您访问的所有文件。代码已更新,请查看