You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何GoDaddy主机上PHP的eval函数无法执行MySQL连接语句?

解决GoDaddy主机上PHP eval执行MySQL连接代码失败的问题

首先咱们拆解下可能的原因,再给出对应的解决方案:

1. 最可能的根源:GoDaddy禁用了eval函数

不少共享主机(包括GoDaddy的部分方案)为了安全性,会在PHP配置的disable_functions列表里添加eval,直接阻止这个函数运行。

验证方法:
创建一个临时PHP文件,内容如下:

<?php
phpinfo();
?>

访问这个文件,找到disable_functions配置项,如果里面包含eval,那就是这个原因。

解决办法:

  • 如果你用的是独立服务器/VPS,可以修改php.ini或者.htaccess(主机允许的话)移除eval的限制;
  • 如果是共享主机,联系GoDaddy客服询问是否可调配置(大概率共享主机不会允许),这种情况建议直接去掉eval,用原始代码执行——毕竟eval本身存在安全风险,能不用尽量不用。

2. 字符串解析的语法兼容问题

你的eval代码语法看起来没问题,但不同PHP版本/环境对字符串的解析可能有差异,试试调整写法:

写法一:转义内部单引号,用单引号包裹代码字符串

eval('$con = mysqli_connect(\'localhost\',\'my_user\',\'my_password\',\'my_db\');');

写法二:用HEREDOC语法避免引号冲突

$dbConnectCode = <<<CODE
\$con = mysqli_connect('localhost','my_user','my_password','my_db');
CODE;
eval($dbConnectCode);

注意HEREDOC里的变量要加反斜杠转义,避免提前解析。

3. 开启错误提示定位具体问题

如果上面的方法都不生效,先开启PHP错误提示,看看具体报错信息,能更精准排查问题:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 你的eval代码放在这里
eval("$con = mysqli_connect('localhost','my_user','my_password','my_db');");

if (!$con) {
    die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>

如果是eval被禁用,会直接抛出类似eval() has been disabled for security reasons的错误;如果是语法问题,会提示对应的解析错误。

内容的提问来源于stack exchange,提问作者Ruwan Liyanage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:15:38