IcePHP导致PHP5 Crash
IcePHP3.2编译成功后就没有仔细看,昨天才发现,PHP5 FastCGI daemon不能启动,crash记录中显示:
Library not loaded: ../../lib/libIce.3.2.0.dylib Referenced from: /opt/IcePHP-3.2.0/lib/IcePHP.so Reason: image not found
应该是Ice的动态库无法找到,但是在bashrc中指定了libpath了。
今天又仔细看了一下,发现是在spawn-php5.sh中的问题,我使用了一个脚本来启动php5,
但是其中环境变量没有传递给php,虽然spawn-fcgi可以获得,但是php无法知道。
修改了一下这几行:
ICE_HOME=/opt/Ice-3.2.0 export ICE_HOME export DYLD_LIBRARY_PATH=$ICE_HOME/lib:$DYLD_LIBRARY_PATH ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS PHPRC ICE_HOME DYLD_LIBRARY_PATH"
重新启动Php5,正常。
Compile IcePHP 3.2 with PHP 5.2.3 on Mac Osx
IcePHP在Linux和Windows上似乎都很好编译,但是非常不幸,我用的是Macbook Pro ![]()
按照帮助配置了config/Make.rules, make 立刻报错,缺少Make.rules.Darwin, 晕啊,Zeroc似乎
不喜欢osx啊,还好发现Ice的源码中有Make.rules.Darwin,在Zeroc的forum上,有人直接复制了
过来,成功编译了IceRuby。以为可以,但是不幸的是,link的时候仍然报了一大堆错误。
看来没戏了,我想去forum发个贴问问,因为3.1还支持osx呢,3.2怎么就突然不支持了呢?
而且奇怪的是,3.1用phpize来autoconf的,但是3.2,则用了手写的Makefile。
ZeroC的forum真是难注册,竟然还需要人工审核才能发言。我等了1天,结果告知我没有被通过,
说是关于本人和使用项目的描述不清,让我重新注册。要被气死,求人不如求己,一气之下
自己写了一个compile.sh,直接用g++编译,管他什么Makefile,竟然link成功,嗯。
看来问题不大,应该是Make.rules.Darwin的问题。既然能用了,就不那么郁闷了,重新审视了
这个配置,嗯,由于是编译Ice使用的,直接用来编译PHP的shared module的确有问题,改了
几处地方,一切都ok了。
你可以在这里下载Makefile.rules.Darwin.
If you want build IcePHP 3.2 with PHP 5.2.x on Mac osx, you should need this file Make.rules.Darwin,
save into config dir under IcePHP source direcotry, then make again.