我搭建的是LNMP环境,系统版本以及php版本相比较来说有点新,今天因为修改了一个php.ini 参数,但是说什么也不能生效。后来慢慢查询原因,发现一个奇怪的现象。
/usr/local/php/bin/php -i |head
phpinfo()
PHP Version => 5.4.0
System => Linux 5d6d-db-dd 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64
Build Date => Jan 24 2013 09:44:46
Configure Command => './configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--with-mysql=/usr/local/mysql' '--with-mysql-sock=/tmp' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-mcrypt=/usr/local/libmcrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-ftp' '--enable-mbstring' '--enable-exif' '--disable-ipv6' '--with-pear' '--with-curl' '--with-openssl'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => (none)
最后一行表示,没有加载到任何配置文件php.ini,然而 ls /usr/local/php/etc/php.ini 确实有这个文件。
实在没有办法,只能使用strace去追踪一下:
strace /usr/local/php/bin/php -i 2> /tmp/1.log
grep 'php.ini' /tmp/1.log 显示如下信息:
open("/usr/local/php/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/nginx/lib/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
write(1, "Configuration File (php.ini) Pat"..., 33) = 33
此时,发现问题,php竟然去/usr/local/php/bin/ 下去找php.ini了。
这是为什么呢? 暂时我还无法解释,之后问题就容易解决了,直接把 php.ini 拷贝至/usr/local/php/bin/即可。