« LNMP服务器几个必做基础安全措施马航MH17航班客机在乌克兰被击落 »

PHP5.3 [HOST=]和[PATH=]配置段与扩展冲突的bug

木其君 | 2014-06-30 16:51 | 字体:

  月末懒散好几天了,不说代码不想写,连编辑的事也不想去做,昨天开始折腾了一新的服务器,到现在没合眼,终于七七八八搞定了。过程是痛苦的,搞定了心情好了,人也精神了。最多的时间是花在PHP5.3.3环境的整合。

  用yum安装已经减少很多琢磨的时间,因为linux平台平时都懒得预先学习,所以遇到很多陌生的情况,倒不是有太难的事,一般搜索都能解决,不过好奇心总是大过理智,总想求个明白,弄个顺理成章,有点强迫症的感觉。

PHP5.3.3系统信息
使用的版本是PHP5.3.3

  CentOS6.5、nginx1.6、php5.3、mysql5.1 都装上配置好后,下了一个phpmyadmin4.2.5安装包,部署好发现提示“您应升级到 MySQL 5.5.0 或更高版本”。我的第一反应当然是把mysql升级上去到5.5,没想到官方yum里面还没有5.5版本的,好容易搜到一个第三方源的有名为mysql55w的安装包,装上后却提示mysql55w-libs和mysql-libs-5.1.x 有冲突无法安装,任我如何卸载5.1的都没用,就是一直提示这个冲突,原因是某些软件依赖这个包。。。安装Mysql-shared-compat几个版本都不合用,最后妥协了,去phpmyadmin官网下了一个与php5.3匹配的版本部署进去用。

  进入phpmyadmin登录界面的时候,看到缺少mcrypt扩展的提示,强迫症又来,yum install未果,原来这个版本官方也不再支持mcrypt。。。找个5、6个rpm安装都没法用,弃之。

  准备装pureftpd,这玩意却不好在CentOS6上用。。。 只好换上vsftpd了,从头学起,安装、配置啊配置,整一整天也快亮了,也因为一个pam_userdb.so的路径耽搁了不少时间,几乎把所有参数都调试了一遍。

  这就是亲手实践的好处,越是空白越有的学,学的也肯定比看书培训清楚,前提是得有时间去消磨。

  FTP连上,差不多齐活了,设置好一些网站安全事宜后,打开phpmyadmin准备搬数据库,见提示“mbstring扩展没能加载成功,请检查php配置”,然后就刚刚php.ini调过的参数逐一排查,查出是[HOST=]和[PATH=]配置段造成的影响,错误定位了好久才确定,这个事网上几乎没其它人遇到,实在奇怪。 不甘心,继续上网查查查,google打都打不开,也没个vpn,只好百度,没用上bing,仍然没查出个辙。只好到php官方手册转转,关于PHP5.3的[HOST=]和[PATH=]配置段内容看了不下三遍,愣是没发现其中一段就是解释这个现象的,确实是有点困,精神状态差了。

  正要放弃找办法,用以前那种指定extension_dir和extendsion的方式来硬加载 ,这个做法PHP扩展可以与[HOST=]配置段共存,就发现了PHP文档上这么一段关于bug的描述:(来源页面链接PHP.NET

crash at lubyte dot de ¶

If you have a system which uses separated PHP inis for loading extensions (Debian, Fedora and most other distributions do so), [PATH=] or [HOST=] will prevent loading extensions defined in those ini files (extension= and zend_extension=).

I had some headache, when I added a hosts.ini to /etc/php5/cgi/conf.d (Debians default), where I wanted to define some defaults for a host name. The manual says extension= and zend_extension= aren't allowed in [HOST=] and [PATH=] (see above). I figured out that you can easily fix that with adding [PHP] after your definitions.

For example hosts.ini:
[HOST=dev.example.com]
display_errors = on

[PHP]

this will change the section back to [PHP] where extension= and zend_extension= is allowed.

  老泪众横了,确实存在这个事情,而且人家给出了解决办法。可惜这是一条三年前的内容条目,还是德国银写的,追究原因就算了,赚钱要紧。


转载请注明:天空巴士 - www.sky84.cn
本文链接地址:http://www.sky84.cn/arch/content_537.html
评论已关闭