PHP 脚本:警告:mysqli::mysqli(): (HY000/2002): No such file or directory in

Posted

技术标签:

【中文标题】PHP 脚本:警告:mysqli::mysqli(): (HY000/2002): No such file or directory in【英文标题】:PHP script: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in 【发布时间】:2018-03-17 00:45:56 【问题描述】:

我使用以下代码连接到我的网络服务器上的数据库:

$conn = new mysqli("localhost", "username", "password", "database_name");

此连接工作正常,我可以毫无问题地使用我的网站(对数据库进行大量查询)。

但是,我遇到了一个 php 脚本的问题,该脚本从产品提要中加载了大约 8000 种产品。在我加载的每个产品上,我都与数据库建立连接(并且在产品加载完成后关闭此连接)。 当我启动这个脚本时,它通常(它有时会起作用)给出以下错误(注意:这个错误直接发生在开始时,它不会加载任何产品):

Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in

我知道已经有很多其他主题出现了同样的错误,但是我还没有设法解决我的问题。我尝试过的一件事是将“localhost”替换为“127.0.0.1”。但是,这会将上述错误更改为:

Warning: mysqli::mysqli(): (HY000/2002): Connection refused in

我希望有人知道为什么会出现这些错误。期待您的意见,谢谢。

【问题讨论】:

阅读本文以获得持久连接:php.net/manual/en/mysqli.persistconns.php 尝试将p:localhost 写入主机名并与我们分享发生的情况。 只是为了确定:你能改变你的脚本,让它只使用一个数据库连接吗?我的意思是,一开始就打开它,在你处理完所有产品之前不要关闭它...... 添加 p:localhost 似乎对我不起作用。 Oscar 建议的一个数据库连接似乎确实有效。我现在已经打开了我的 PHP 脚本 5 次(以加快产品的加载速度,这是必要的,因为将产品加载到数据库中需要一段时间)但是我现在面临的问题是我收到了“警告:mysqli:: mysqli(): (HY000/2002): 当我尝试打开表时,我的网站和数据库中都没有这样的文件或目录。我猜这背后的原因是我只能打开有限数量的数据库连接? 看来是这样。看php.net/manual/en/mysql.configuration.php 【参考方案1】:

我遇到了类似的问题,并且该错误非常具有误导性。虽然它没有直接回答上述问题,但我将我的发现留给那些登陆此页面的人:

 1. mysql is not started and/or is not running (no such file error)

检查config/database.php(权限被拒绝)

2. username/password combination is wrong 
3. hostname: switch between `localhost` OR `127.0.0.1` (depends on how the password for the mysql user is set)

SELinux 权限:

4. Check audit.log `tail -f /var/log/audit.log` when reloading the page 
   and see if any error similar to below occures: 

avc: denied name_connect for pid=2440 comm="/usr/sbin/httpd" dest=3306 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0

如果出现上述错误,则以root身份执行setsebool -P httpd_can_network_connect_db 1

【讨论】:

【参考方案2】:

我面临着完全相同的问题。只需更改服务器名称 来自

localhost

localhost:3306

【讨论】:

以上是关于PHP 脚本:警告:mysqli::mysqli(): (HY000/2002): No such file or directory in的主要内容,如果未能解决你的问题,请参考以下文章

[尝试使用mysqli连接到数据库时出现Codeigniter错误

新的 mysqli 连接在我的 Cpanel 中不起作用,但在我的计算机中起作用 [重复]

PHP错误“mysqli :: mysqli():(HY000/2002)” [重复]

php mysqli mysqli_query() mysqli_real_query()

PHP 更改为 mysqli。 mysqli_connection 不是全局的吗?

PHP的数据库连接mysqli遍历示例