我們前面稍微提過 PHP 是 Apache 當中的一個模組,那在談了 Apache 的 httpd.conf 之後,『我們怎麼沒有講到 PHP 這個模組的設定啊?』不是不講啦!而是因為目前 Apache 很聰明的將一些重要模組給他拆出來放置到 /etc/httpd/conf.d/*.conf 檔案中了,所以我們必須要到該目錄下才能瞭解到某些模組是否有被加入啊!底下先來瞧瞧吧!
[root@www ~]# cd /etc/httpd/conf.d
[root@www conf.d]# ll *.conf
-rw-r--r--. 1 root root 674 Jun 25 15:30 php.conf      <==提供 PHP 模組的設定
-rw-r--r--. 1 root root 299 May 21  2009 welcome.conf  <==提供預設的首頁歡迎訊息
# 如果你是按照剛剛鳥哥說的幾個模組去安裝的,那麼這個目錄下至少會有這兩個資料,
# 一個是規範 PHP 設定,一個則是規範『如果首頁不存在時的歡迎畫面』囉。
我們主要來看看關於 PHP 的設定檔吧:
[root@www conf.d]# vim /etc/httpd/conf.d/php.conf
<IfModule prefork.c>  <==根據不同的 PID 模式給予不同的 PHP 運作模組
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php  <==所以副檔名一定要是 .php 結尾!
AddType text/html .php       <==.php 結尾的檔案是純文字檔
DirectoryIndex index.php     <==首頁檔名增加 index.php 喔!
#AddType application/x-httpd-php-source .phps <==特殊的用法!
CentOS 6.x 使用的是 PHP 5.x 版本,這個版本依據不同的 apache 使用記憶體模式 (prefork 或 worker) 給予不同的模組!此外,為了規範 PHP 檔案,因此多了最後三行,包括增加副檔名為 .php 的檔案處理方式, .php 定義為純文字檔,以及首頁檔名增加 index.php 等。基本上,這個檔案你不需要有任何的修改,保留原樣即可。


  • PHP 的資安方面設定
你必須要知道 PHP 的設定檔其實是在 /etc/php.ini ,這個檔案內容有某些地方可以進行一些小修改, 也有某些地方你必須要特別留意,免得被用戶端誤用你的 PHP 資源。底下先介紹一下 PHP 常見的與資安方面較相關的設定:
[root@www ~]# vim /etc/php.ini
register_globals = Off
# 這個項目請確定為 Off (預設就是 Off),因為如果設定為 On 時,
# 雖然程式執行比較不容易出狀況,但是很容易不小心就被攻擊。
log_errors = On
ignore_repeated_errors = On  <==這個設定值調整一下 (因預設為 Off)
ignore_repeated_source = On  <==這個設定值調整一下
# 這三個設定項目可以決定是否要將 PHP 程式的錯誤記錄起來,
# 建議將重複的錯誤資料忽略掉,否則在很忙碌的系統上,
# 這些錯誤資料將可能造成你的登錄檔暴增,導致效能不佳 (或當機)
display_errors = Off
display_startup_errors = Off
# 當你的程式發生問題時,是否要在瀏覽器上頭顯示相關的錯誤訊息 (包括部分程式碼)
# 強烈的建議設定為 Off 。不過如果是尚未開放的 WWW 伺服器,為了你的 debug
# 容易,可以暫時的將他設定為 On ,如此一來你的程式問題會在瀏覽器上面
# 直接顯示出來,你不需要進入 /var/log/httpd/error_log 登錄當中查閱。
# 但程式完成後,記得將此設定值改為 Off 喔!重要重要!
如果你想要提供 Apache 的說明文件給自己的 WWW 伺服器的話,可以安裝一下 httpd-manual 這個軟體,你就會發現在這個目錄當中又會新增檔案 (manual.conf),而且從此你可以使用 http://localhost/manual 來登入 Apache 的使用手冊呢!真方便!有興趣的話可以參考與安裝底下這些軟體喔:
  • httpd-manual:提供 Apache 參考文件的一個軟體;
  • mrtg:利用類似繪圖軟體自動產生主機流量圖表的軟體;
  • mod_perl:讓你的 WWW 伺服器支援 perl 寫的網頁程式(例如 webmail 程式);
  • mod_python:讓你的 WWW 伺服器支援 python 寫的網頁程式。
  • mod_ssl:讓你的 WWW 可以支援 https 這種加密過後的傳輸模式。
perl 與 python 是與 PHP 類似的咚咚,都是一些很常用在網頁的程式語言! 例如知名的 OpenWebMail (http://openwebmail.org/) 就是利用 perl 寫成的。要讓你的 WWW 支援該程式語言, 你就得要安裝這些東西啦!(但不是所有的軟體都安裝!請安裝你需要的即可!)


  • PHP 提供的上傳容量限制
我們未來可能會使用 PHP 寫成的軟體來提供用戶上傳/下載檔案資料,那麼 PHP 有沒有限制檔案容量呢? 答案是有的!那麼容量限制是多大?預設是 2M 左右。你可以修改它的,假設我們現在要限制成為 16MBytes 時,我們可以這樣修訂:
[root@www ~]# vim /etc/php.ini
post_max_size = 20M       <==大約在 729 行左右
file_uploads = On         <==一定要是 On 才行 (預設值)
upload_max_filesize = 16M <==大約在 878 行左右
memory_limit = 128M       <==PHP 可用記憶體容量也能修訂!
與檔案上傳/下載容量較相關的就是這幾個設定值~為啥 post_max_size 要比 upload_max_filesize 大呢? 因為檔案有可能也是透過 POST 的方式傳輸到我們伺服器上頭,此時你的檔案就得要加入 POST 資訊內~ 因為 POST 資訊可能還含有其它的額外資訊,所以當然要比檔案容量大才行!所以在設計這個設定檔時, 這兩個值得要特別注意喔!