如何在服务器重启过程中避免PHP错误?

我在我的服务器日志中发现一个PHP错误,说:

[02:09:27 UTC] PHP致命错误:带有消息'SQLSTATE [HY000] [2002]的未捕获的exception'PDOException'/var/www/include/db_connect.php:7中没有这样的文件或目录
堆栈跟踪:
`#0 /var/www/include/db_connect.php(7):PDO – > __ construct('mysql:dbname = my …','apache','123 …')

进一步的检查显示,这个错误发生在服务器启动的时候。 日志日志包含以下相关行:

02:09:22 systemd[1]: Starting The Apache HTTP Server... 02:09:22 systemd[1]: Starting MariaDB database server... 02:09:22 systemd[1]: Starting The PHP FastCGI Process Manager... 02:09:24 systemd[1]: Started The Apache HTTP Server. 02:09:25 mysqld_safe[713]: Logging to '/var/log/mariadb/mariadb.log'. 02:09:25 mysqld_safe[713]: Starting mysqld daemon with databases from /var/lib/mysql 02:09:25 systemd[1]: Started The PHP FastCGI Process Manager. 02:09:28 NetworkManager[579]: <info> startup complete 02:09:28 systemd[1]: Started MariaDB database server. 

由于PHP错误发生在第二十七秒,在Apache启动三秒之后,为什么PHP会抱怨找不到这个文件? 在任何情况下,Apache,PHP-FPM和MariaDB的启动顺序是否应该颠倒过来,以使Apache成为最后一个启动程序?

尽pipePHP错误发生在Apache启动后三秒钟,但在MariaDB启动之前还有一秒钟的时间。

查看PHP文件db_connect.php第7行可能是db_connect.php 。 我会打赌它试图连接到数据库使用套接字,并且由于数据库还没有创build套接字,你会得到一个No such file or directory错误。


我猜你只有一个服务器在这里运行一切,而不是一个单独的数据库和Web层的池。 所以,当服务器重新启动时,你的网站是closures的,并且在数据库出现之前,前几个请求也会失败。 如果你想提高你的正常运行时间,你将需要一个类的集群。 如果您只是想防止错误发生,请确保在启动Apache之前数据库已经启动。 实现这一点的方法取决于你的发行版。