在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