网站首页 > 技术教程 正文
系统环境
centos7.2+nginx1.18.0+php7.2.13+mysql5.7
nginx1.18.0+php7.2.13+mysql5.7中间件均为编译安装
nginx针对php请求,设置了转发到PHP-FPM(PHP-FPM:PHP的一个FastCGI管理器,用于提高Web环境下PHP的性能)
php安装目录/usr/local/php/
事故现象
刚搭建的web测试服务器(centos+nginx+php+mysql),部署完php程序。程序运行时,发现定时任务(linux crontab)执行出现error(有访问mysql数据库的时候)报错描述:找不到pdo_mysql驱动。随后访问网站地址,查看程序运行(有访问mysql数据库的功能),一切正常。你说这是咋回事?
排查分析
- 打开php安装目录下的php.ini文件
vi /usr/local/php/php.ini
找到了pdo_mysql驱动的配置
- 查看编译安装时,指定的配置文件是/usr/local/php/php.ini吗?
查看安装php指定的配置文件目录:
--with-config-file-path=/usr/local/php/etc/
- 查看/usr/local/php/etc/目录下面,是否存在php.ini文件。
cd /usr/local/php/etc/ && ls
查看结果,不存在php.ini文件。因此,这个很可能是因为定时任务执行php,找不到php配置文件,造成的错误。
- 那么问题产生,定时任务命令行执行php使用的php配置文件和访问网站地址使用的php配置文件是不一样的?那么就要捋一下了!
- 命令行执行:
PHP-FPM会直接去使用在编译安装 PHP 指定的 --with-config-file-path选项指定的路径下的 php.ini 文件。
- 访问网址:
浏览器访问通过nginx代理服务器,转发到PHP-FPM进程管理器,在 PHP-FPM 中,默认的 PHP 配置文件搜索路径是硬编码在编译时的,默认安装路径,而不受到--with-config-file-path选项的影响。因此,即使您在编译时指定了--with-config-file-path=/usr/local/php/etc,PHP-FPM 仍然会在默认的安装路径/usr/local/php中寻找php.ini文件。
起初怀疑php-fpm.conf配置中设置php_admin_value[include_path]则使用该目录下的php.ini文件。但其实 php_admin_value[include_path] 并不会影响 PHP 查找 php.ini 文件的路径。PHP-FPM 启动后会先读取 php.ini 文件,然后再读取相应的 conf 配置文件,conf 配置可以覆盖 php.ini 的配置。PHP-FPM 仍然会在默认的安装路径/usr/local/php中寻找php.ini文件。如果你想更改 PHP 查找 php.ini 文件的路径,可以在 PHP 的命令行中使用 -c 参数指定路径。示例:php -c /usr/local/php/etc/php.ini aaa.php
因此,即使您在编译时指定了其他的--with-config-file-path,PHP-FPM 也会优先使用它的默认规则去寻找 php.ini 文件,无法像PHP命令行那样受--with-config-file-path配置项的影响。这是 PHP-FPM 在设计时的一种默认行为。
综上所述:通过访问网址,php读取的是/usr/local/php/php.ini文件,所以能找到配置文件;而定时任务是在命令行执行php,由于编译安装指定的配置文件目录是/usr/local/php/etc/下面,php读取的是/usr/local/php/etc/php.ini文件,正是/usr/local/php/etc/目录下面没有php.ini文件,导致的此次报错。
修复方案
- 执行cp /usr/local/php/php.ini /usr/local/php/etc/ 使两个目录下保持php.ini文件同步
- 或者卸载php,重新编译安装php并指定配置文件目录/usr/local/php/
猜你喜欢
- 2024-10-07 2077年了,PHP语言现在怎么样啦?(php语言为什么走下坡路了)
- 2024-10-07 Docker快速搭建PHP开发环境详细教程
- 2024-10-07 DevOps实例之使用GitLab CI进行Laravel应用程序的测试和部署
- 2024-10-07 PHP爬虫编写(php网络爬虫)
- 2024-10-07 PHP学习之旅-启程篇:PHP究竟是什么?
- 2024-10-07 小白爱折腾·其四:Linux部署Lnmp+PHPMyadmin环境
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)