Php
php找不到zend擴展(ioncube)
在我擁有的一台伺服器上
php-5.6.7-1
,我順利安裝ioncube
在那裡。我放入ioncube_loader_lin_5.6.so
,/usr/lib/php5/20131226
並添加zend_extension = ioncube_loader_lin_5.6.so
到php.ini
。但這不適用於其他伺服器。我已經到了
php-5.4.4-14+deb7u4
。我放入ioncube_loader_lin_5.4.so
,/usr/lib/php5/20100525
並添加zend_extension = ioncube_loader_lin_5.4.so
到php.ini
。$ php -i | grep extension_dir extension_dir => /usr/lib/php5/20100525 => /usr/lib/php5/20100525 $ php --version Failed loading ioncube_loader_lin_5.4.so: ioncube_loader_lin_5.4.so: cannot open shared object file: No such file or directory PHP 5.4.4-14+deb7u4 (cli) (built: Aug 23 2013 14:37:41) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
現在到有趣的部分:
$ strace php --version ... access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/tls/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/tls/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/x86_64-linux-gnu/tls", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/x86_64-linux-gnu/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 open("/usr/lib/x86_64-linux-gnu/tls/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/tls/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64-linux-gnu/tls", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64-linux-gnu/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 open("/lib/tls/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/tls/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/tls/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/tls", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/lib/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 open("/usr/lib/tls/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/tls", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/x86_64", 0x7fff2cc8cf60) = -1 ENOENT (No such file or directory) open("/usr/lib/ioncube_loader_lin_5.4.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 munmap(0x7f1f3e188000, 37265) = 0 write(2, "Failed loading ioncube_loader_li"..., 128Failed loading ioncube_loader_lin_5.4.so: ioncube_loader_lin_5.4.so: cannot open shared object file: No such file or directory ) = 128 open("/usr/lib/php5/20100525/mysqlnd.so", O_RDONLY) = 6 ...
在第一台伺服器上
php
顯然載入庫沒有任何問題:$ strace php --version ... futex(0x7fbf391860c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 open("/usr/lib/php5/20131226/ioncube_loader_lin_5.6.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220o\2\0\0\0\0\0"..., 832) = 832 ...
是否與某些
configure
選項有關,這些選項阻止它在內部搜尋 zend 擴展/usr/lib/php5/20100525
?有沒有辦法找到它們?我是什麼做的?
嘗試指定完整路徑:
zend_extension = /full/path/to/ioncube_loader_lin_5.4.so
我不知道這個變化是從什麼時候開始的,但是一個習慣是始終指定完整路徑,
zend_extension
直到建構 PHP 5.5(在 Fedora 上,但我認為在 Debian 上是一樣的)。我認為這是維護者的選擇。