lnmp php重启没有加载正确php.ini文件

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

早上修改了php的配置文件,php-fpm.conf,重启nginx,php-fpm后发现网站启动不来了。nginx错误日志为:

1
2
2015 /09/18  10:11:30 [error] 15081 #0: *1073 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(Zend/Application.php): failed to open stream: No such file or directory in /web/www.XXX.com/wwwroot/public/index.php on line 18
PHP message: PHP Fatal error:  require_once(): Failed opening required  'Zend/Application.php'  (include_path= '/web/www.XXX.com/wwwroot/library:.:/usr/local/lib/php' in  /web/www .XXX.com /wwwroot/public/index .php on line 18 " while reading response header from upstream, client: xxx.19.116.133, server: www.XXX.com, request: " GET / HTTP /1 .1 ", upstream: " fastcgi: //unix : /usr/local/php/var/run/www .XXX.com.socket: ", host: " www.XXX.com"

通过好长时间的分析,是php.ini里面的zend配置没有生效,因此有可能是php.ini文件没有被加载。

首先检查PHP的编译参数

1
2
[huwei@xxx ~]$  /usr/local/php/bin/php  -i| grep  configure
Configure Command =>   './configure'   '--prefix=/usr/local/php'  '--with-config-file-path=/usr/local/php/etc'  '--with-mysql=/usr/local/mysql'  '--with-mysqli=/usr/local/mysql/bin/mysql_config'  '--with-mysql-sock=/tmp/mysql.sock'  '--with-pdo-mysql=/usr/local/mysql'  '--with-gd'  '--enable-libxml'  '--enable-xml'  '--enable-bcmath'  '--enable-shmop'  '--enable-sysvsem'  '--enable-inline-optimization'  '--with-curlwrappers'  '--enable-mbregex'  '--enable-fpm'  '--enable-mbstring'  '--enable-ftp'  '--enable-gd-native-ttf'  '--with-openssl'  '--enable-pcntl'  '--enable-sockets'  '--with-xmlrpc'  '--enable-zip'  '--enable-soap'  '--without-pear'  '--with-gettext'  '--enable-session'  '--with-mcrypt'  '--with-curl'  '--enable-ctype'  '--with-freetype-dir'

--with-freetype-dir参数是后面重新编译添加的参数,也就是说,PHP经历过两次编译.

查看php的php.ini文件默认路径:

1
2
3
[huwei@xxx ~]$  /usr/local/php/bin/php  -i| grep  php.ini
Configuration File (php.ini) Path =>  /usr/local/php/etc
Loaded Configuration File =>  /usr/local/lib/php .ini

由此可以看出,此时php默认加载的php.ini文件存在路径是:/usr/local/lib/php.ini

而我的正确的php.ini文件存在路径为:/usr/local/php/etc/php.ini

经检查,/usr/local/lib/php.ini的确没有配置zend扩展,因此网站无法启动.

cp /usr/local/php/etc/php.ini /usr/local/lib/php.ini

将php.ini文件覆盖过去,重启php-fpm,网站OK

或者使用命令直接加载php.ini文件

1
[root@test31 etc] # /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

解决问题



思考:php文件:php-fpm.conf php.ini两个文件,php-fpm.conf是 php-fpm进程服务的配置文件

php.ini是php运行核心配置文件,也是php扩展的配置文件,比如

1
2
3
extension=memcache.so
extension=yaf.so
extension=redis.so

在php.ini里面将扩展内容配置才能生效.

因此本案件中,zend扩展没有生效,就可以查找php.ini文件是否生效.




本文转自 yawei555 51CTO博客,原文链接:http://blog.51cto.com/huwei555/1696041,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
30 0
thinkphp5.1隐藏index.php入口文件
|
3月前
|
PHP 数据安全/隐私保护
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
|
7月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
81 0
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
107 0
|
7月前
|
关系型数据库 MySQL Unix
PHP MySql 安装与连接
PHP MySql 安装与连接
125 0