注意:php
有什麼不對的地方請大神們多多指教!!!
今天發佈代碼的時候,使用小夥伴搭建的lamp環境遇到這樣的一個問題: 使用Thinkphp5,鏈接mysql服務失敗mysql
下面開始查找緣由和解決問題的過程:linux
開始的時候懷疑是 網絡問題 和 mysql的 端口被禁了web
測試:sql
1.在web 服務器上ping mysql 服務ip;結果發現ping通了thinkphp
2.而後嘗試用mysql 客戶端,遠程鏈接mysql 服務;結果發現竟然成功了centos
結論:安全
1.應該跟網絡,端口,mysql用戶無關(畢竟用的是同一臺服務器,同一個帳戶,同一個端口)服務器
既然提供的服務是正常的,可是php鏈接失敗(不是代碼問題);那個會不會是由於php的擴展問題網絡
測試:
php -m 看了下發現該有的擴展都有
結論:
1.估計應該跟代碼 和 擴展沒有多大關係了
忽然想起了 seLinux 這個東西;依稀記得 centos 6 後面就搞了這個東西進去;會不會是這個東西搞怪呢?
小插曲:
什麼是 seLinux?(百度的)
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對於強制訪問控制的實現,是 Linux歷史上最傑出的新安全子系統。在這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所須要文件。SELinux 默認安裝在 Fedora 和 Red Hat Enterprise Linux 上。雖然SELinux很好用,可是在多數狀況咱們仍是將其關閉,由於在不瞭解其機制的狀況下使用SELinux會致使軟件安裝或者應用部署失敗。
測試:
1.看了下服務器的系統信息:centos 7 感受像了。。。
2.看了下seLinux的狀態:
# /usr/sbin/sestatus -v
查看selinux的詳細狀態,若是爲enable則表示爲開啓;結果發現 果真開着
3.關掉它試試。。。
臨時性關閉(當即生效,可是重啓服務器後失效)
# setenforce 0 #設置selinux爲permissive模式(即關閉) # setenforce 1 #設置selinux爲enforcing模式(即開啓)
永久性關閉(這樣須要重啓服務器後生效)
修改/etc/selinux/config 文件 將SELINUX=enforcing改成SELINUX=disabled
結論:
1.經過了。。。