我在Amazon Web Services上有一個EC2實例,並且在同一個VPC中還有一個ElastiCache(Redis)實例。 我的EC2實例安裝了Amazon Linux AMI 2015.09。我還將它配置爲使用mpm_worker_module,而不是prefork。配置正常工作,我可以從我的瀏覽器訪問頁面。redis.so模塊未加載
我已經安裝了redis客戶端,redis-cli命令完全可以在ssh中使用。
然後我安裝了phpredis(https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip),我創建了一個簡單的PHP腳本來檢查它是否正常工作(簡單的index.php)。
如果我從ssh控制檯(即php index.php)啓動這個腳本,它很好用。如果我啓動相同的腳本試圖從我的瀏覽器打開網頁我得到這個錯誤: Fatal error: Class 'Redis' not found
內阿帕奇我php.conf文件如下:
<IfModule prefork.c>
LoadModule php5_module modules/libphp-5.6.so
</IfModule>
<IfModule !prefork.c>
LoadModule php5_module modules/libphp-zts-5.6.so
</IfModule>
在文件夾中的/ etc/PHP的ZTS-5.6.d我已經加入了文件「redis.ini」裏面
extension = redis.so
我也注意到,Redis的安裝添加redis.so僅此文件夾
/usr/lib64/php/5.6/modules/
而不是/usr/lib64/php-zts/5.6/modules/
文件夾,所以我將它從一個文件夾複製到另一個文件夾。但它仍然沒有工作,用同樣的錯誤:
Fatal error: Class 'Redis' not found
相反,如果我用Predis,以「包括」 autoload.php的,它工作正常。但是我想安裝phpredis,因爲我們的系統每秒會向Redis服務器發出數千次呼叫,並且編譯後,phpredis將會更快。
我在做什麼錯?
編輯 在我Redis的錯誤日誌中我得到這個消息
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.6/modules/redis.so' - /usr/lib64/php/5.6/modules/redis.so: undefined symbol: compiler_globals in Unknown on line 0
另外,如果我用的是prefork的模塊,它的偉大工程。如果我使用工人,我得到了上述錯誤。