运营维护

解决PHP加载组件提示:PHP Warning: PHP Startup: Unable to load dynamic library ‘./apc.so’ – ./apc.so: cannot open shared object file: No such file or directory in Unknown on line 0

前面发表了一篇文章:APC3.1.9自动安装脚本For DirectAdmin

给另一台PHP版本为5.2.17的服务器使用时,发现APC组件没有成功加载,PHP探针里面无法检测到,

起初以为路径的问题,于是把php.ini里面的:

更改为:

但是很可惜,仍然不行。

尝试重新编译安装APC,依然是那样。想起有错误日志,于是打开看了下,果然,N行同样的错误记录:

貌似是./有问题,使得PHP在./,也就是自己所在的目录寻找apc.so文件,理所当然是找不到的。不过填的是绝对路径呀,PHP应该是通过绝对路径加载apc.so的,而且另外的IonCube和Zend Optimizer也都是绝对路径。

对比了下IonCube、Zend Optimizer和APC的so文件的目录,IonCube和Zend Optimizer的so文件都是在/usr/local/lib里面,而apc.so是在/usr/local/php5/lib/php/extensions/里面。想起PHP5.3的那台服务器是使用extension=”apc.so”这句代码就能成功加载APC。

这下狂然大悟,一定是extension_dir的问题。于是对比了下PHP5.3和PHP5.2的php.ini的extension_dir的参数,发现都是:

不过关键的是:PHP5.3的在最前面加了个“;”注释掉了,而PHP5.2没注释,于是修改PHP5.2的php.ini,于是加了个“;”把extension_dir = “./”注释掉,再重启apache。

抽薪止沸,F5探针,APC旁边的小红X没了:

APC