Cpanel主机MySQL数据库连接报错:php_network_getaddresses错误求助
先看你贴出的错误日志:
Connection failed: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
这个错误我在Cpanel环境里碰过好几次,核心问题是PHP没法解析你代码里的localhost主机名,找不到对应的数据库服务器地址。结合Cpanel的特性,给你几个具体的排查和解决步骤:
替换
localhost为Cpanel提供的专属数据库主机地址
很多Cpanel主机的数据库服务器并不使用localhost,而是有专门的内网域名(比如db.yourdomain.com)或者内网IP。你登录Cpanel面板后,找到MySQL Databases或者Database Manager功能,里面会明确显示你的数据库对应的「Host」地址——把代码里的$servername = "localhost";替换成这个地址,大概率能解决解析问题。确认数据库用户名、密码的有效性
虽然当前错误提示是地址解析问题,但也顺手核对下helloDB这个用户名和对应的密码是否正确。另外要确保该用户已被授权连接目标数据库:在Cpanel的用户管理界面里,检查这个用户的权限,以及是否允许从当前服务器的IP访问(Cpanel默认会开放内网/本地连接权限,但最好确认下)。检查PHP的mysqli扩展是否启用
登录Cpanel找到Select PHP Version,在扩展列表里看mysqli是否已经勾选启用。如果没启用,勾选后保存设置,再重新测试连接。用IP地址直接替代主机名
如果Cpanel给出的数据库主机是内网IP,直接把$servername改成这个IP(比如$servername = "192.168.1.100";),有时候主机名解析出问题,用IP能直接绕过解析错误。
额外提一句:你可以先试试在Cpanel的phpMyAdmin里用相同的用户名和密码登录数据库,如果能正常进入,说明数据库本身是正常运行的,问题肯定出在PHP代码的连接参数上。
给你一个调整后的测试代码参考(建议加上要连接的数据库名,避免后续操作报错):
<?php $servername = "你的Cpanel数据库主机地址"; $username = "helloDB"; $password = "MY_PASS"; $dbname = "你要连接的数据库名称"; // 比如和用户名同名的helloDB $conn = mysqli_connect($servername, $username, $password, $dbname); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; ?>
内容的提问来源于stack exchange,提问作者Mir

