在centos7上安裝好apache2, php5, 運行 phpinfo()函數一切順利,
然后github下載 phpredis源碼,編譯安裝也順利,
照著官網拷貝了一個 php訪問redis的程序,
歡迎加入QQ群:<a >CTP/易盛(行情交易)開發</a>
然后命令行執行 php a.php, 訪問redis也正常, 可以讀出鍵值.
但是用網頁訪問: http://192.168.1.201:9000/a.php
然后就這樣活見鬼了, 總是提示500錯誤。
然后懷疑是不是我自己編譯的 phpredis有什么選項錯誤,與apache不匹配,
我用yum install 重裝了phpredis: yum install php-pecl-redis.x86_64
然后繼續發現還是沒卵用.
然后我開始搗鼓阿里云買的ubuntu 14.04LTS 64bit,
ubuntu 上面直接通過命令 apt-get install apach2 php5 php5-redis
三分鐘就能把php讀寫redis內存數據庫的問題搞定, centos下面弄一個下午都沒搞定。
今早上終于通過google找到了解決方案
http://www.cnblogs.com/jthb/p/3708532.html
在CentOS下配置Apache+php+redis+phpredis環境。
編輯訪問redis緩存的php程序test.php,以應用程序方式在后臺運行,可成功訪問Redis,
而在Apache下以網頁形式訪問時則出錯,在訪問Redis以及之后的代碼均不再執行。查看Apache的日志:/var/log/httpd/error_log,發現代碼運行時出現異常:
PHP Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in /var/www/html/test.php
在網上查該異常時均認為是php的Sokcet超時時間設置的過短,應該在代碼前加上:ini_set(‘default_socket_timeout’, -1);
經測試仍無法解決該問題,因在代碼后臺運行正常,因此判斷并非代碼本身問題,而是Apache不允許訪問網絡資源,嘗試如下解決方法:
打開/etc/selinux/config,找到其中的:
SELINUX=enforcing
改為:SELINUX=disabled
問題解決!
如果仍不能解決問題,可執行如下指令:
/usr/sbin/setsebool httpd_can_network_connect=1