发表回复 
 
主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
安装scws-1.1.5时遇到问题:Unable to load dynamic library
2011年01月12日, 10:40
问题 安装scws-1.1.5时遇到问题:Unable to load dynamic library
你好,我在安装scws-1.1.5时遇到问题,不知可否帮忙解决:
我参照的是 scws-1.1.5安装说明 进行安装,在php加载 scws.so 时出现错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/scws.so' - /usr/lib/php/modules/scws.so: undefined symbol: zend_ini_string_ex in Unknown on line 0

实际上,.../modules/ 目录下是存在 scws.so 文件的,我根据 安装说明 编译出这个 scws.so 文件,本位于 /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 目录下,我把 scws.so 复制到 /modules 目录下。

php.ini中,extension_dir = "/usr/lib/php/modules",mysql.so 等这些都放在这里,我把它改成 "./",不行,错误提示的路径变成 "./scws.so",我把 extension_dir 改成 "/usr/.../no-debug-non-zts-20090626/" 也不行,scws.so 还是加载不了,而且 mysql.so 那些也加载不了了。

我在论坛上搜索这个问题,试过在“phpext 目录的 configure 运行前 export CFLAGS="-O2 -DZTS=1"”,也不行。

请问我应如何正确加载 scws.so 这个模块,谢谢。
查找这个用户的全部帖子
引用并回复
2011年01月12日, 11:15
RE: 安装scws-1.1.5时遇到问题:Unable to load dynamic library
从错误提示看并不是找不到路径,而是加载时出现未定义的函数。

是不是你编译scws-1.1.5所有的 phpize以及php-config 和你正在用的不匹配?如果你安装了多个版本的PHP,请指定正确的 phpize 以及在 configure时加入 --with-php-config= .. 指定路径。

经常有的人由于各种原因在系统装上了多个版本的PHP
查找这个用户的全部帖子
引用并回复
2011年01月12日, 18:08 (这个帖子最后修改于: 2011年01月12日 18:10 by Nuarpmoxrar.)
RE: 安装scws-1.1.5时遇到问题:Unable to load dynamic library
[quote='hightman' pid='3990' dateline='1294802102']
从错误提示看并不是找不到路径,而是加载时出现未定义的函数。

是不是你编译scws-1.1.5所有的 phpize以及php-config 和你正在用的不匹配?如果你安装了多个版本的PHP,请指定正确的 phpize 以及在 configure时加入 --with-php-config= .. 指定路径。

经常有的人由于各种原因在系统装上了多个版本的PHP
[/quote]

你好,先谢谢你的回复。

我的系统环境是 centOS5

因为我linux的功底基本没有,所以也不能判断系统中是否装有两个php。我手动把php装在 /usr/local/php 中,是编译安装的,我用 find 令命搜索的结果是:

find / -name php -print
/home/www/yj/fckeditor/editor/filemanager/connectors/php #这个是网页文件
/home/soft/php-5.3.4/sapi/cli/php #这个是php的源码文件
/var/lib/php
/usr/bin/php #这个 php 是个行运行文件(绿色的),可能就是另一个版本的
/usr/local/php #这个是我手动的安装目录
/usr/local/php/bin/php
/usr/local/php/lib/php
/usr/local/php/include/php
/usr/lib/php #这个就是放 *.so 文件的目录

在 /usr/bin/ 下还有个 php-cgi。

嗯,我编译 scws.so 时指定的 phpize以及php-config 都是用手动安装的 /usr/local/php 目录下的文件,而我用 /usr/local/php/bin/php -m|grep scws 出来的也是上面提到的错误。

哦,我把 /usr/bin/php 这个文件改了名,再重启 apache,apache能正常启动,普通php文件也能正常解释,但问题依旧。

嗯,请问我下一步应做些什么操作?

(PS:论坛帖子的“主题订阅”好象无效,我选的是“订阅这个主题并且有新回复时用 Email 通知我”,但没收到Email。)
查找这个用户的全部帖子
引用并回复
2011年01月12日, 22:53
RE: 安装scws-1.1.5时遇到问题:Unable to load dynamic library
既然这样你编译的scws应当是要给自己安装的 /usr/local/php 使用的对吧?如果你编译的结果是给另一个版本的php用,则应当用/usr/bin/php-config 及 phpize
确认一下扩展编译步骤(在 scws-1.1.5/phpext/ 目录下运行以下):
/usr/local/php/bin/phpize --clean
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config
make
make install

这时 .so 可能会安装到默认的 /usr/local/php/lib/extensions/no-debug ...
拷到你需要的位置,以这个方式编译出来的 scws.so 至少对于 /usr/local/php/bin/php 是可用的。

此外再用一下 /usr/local/php/bin/php -v 确认版本,以及查看一下它所起作用的 php.ini 是哪个
/usr/local/php/bin/php -i | grep Configuration
查找这个用户的全部帖子
引用并回复
2011年01月14日, 12:09
大笑 RE: 安装scws-1.1.5时遇到问题:Unable to load dynamic library
问题解决了:

原来安装系统时默认就安装了 apache 及 php,而我又手动装了 apache 及 php。不过,两个apache加载的都是系统默认安装的 php 而非我手动安装的那个,而 scws 却是用手动安装的进行编译的,所以加载不成功。

只要重新编译一下php,用 --with-apxs2=/usr/local/apache2/bin/apxs 指定一下apache,就可以加载手动安装的这个php了,这样就可以正常加载scws了。

如果遇到跟我一样的问题:Unable to load dynamic library,最好用安装的php下的/bin/php 来检查一下是否能正常加载,方法是:

/...(安装目录)/php/bin/php -m|grep scws

如果不能加载,就会出现 Unable …… 这个错,如果没出现这个信息,则表示能正常加载了。需要注意一点,如果已用 cd 进入到 /php/bin/ 目录,要这样运行:./php -m|grep scws 。注意加"./",我之前就是因为没加这个,所以还是会用系统默认安装的php 来运行,所以才会加载不成功。

谢谢 hightman ,谢谢这个论坛。
查找这个用户的全部帖子
引用并回复
发表回复 


论坛跳转:


正在浏览该主题的用户: 1 个游客