無法使用 ftp_connect 的原因暨修正
描述
SYF 開發代找功能上線測試時,發現伺服器無法將檔案上傳至 ftp。
問題拆解
- 測試各孿生機(12, 235, SYF)、本機開發環境(windows 7 xampp)
- 使用其他 ftp 伺服器測試是否內部 port forwarding 等設定造成;
分析是 ftp server 問題或是 client 問題。 - 於 client console 測試 php process,分析是程式問題或是系統設定問題
- 系統設定:httpd? OS setting?
測試用檔案
echo ($conn = ftp_connect("ftp.syf.com.tw")) ? 'Success to SYF ftp!!' : 'Could not connect SYF ftp' , '<br/>';
echo ($conn = ftp_connect("myweb.ncku.edu.tw")) ? 'Success to NCKU ftp!!' : 'Could not connect NCKU ftp' , '<br/>';
結果
為 SELinux 限制 httpd 連出所造成。
# 檢查 selinux 的 httpd 連線限制參數$ getsebool httpd_can_network_connect
httpd_can_network_connect --> off
# 開啟權限並寫入設定擋$ setsebool -P httpd_can_network_connect=1
$ getsebool httpd_can_network_connect
httpd_can_network_connect --> on