:::

3. 修改php.ini及Apache設定

  1. php.ini 的設定非常重要,尤其是時區與除錯的設定,沒設定好,日後問題多多。
    vi /etc/php5/apache2/php.ini
    
    設定項目 建議值 相關說明
    allow_url_fopen 1
    是否允許打開遠端檔案?部份模組有抓取遠端檔案的需求,關閉此項目可能會導致該模組功能無法正常運作,但若主機有支援 curl 函數的話,那麼關閉此設定亦可。
    date.timezone Asia/Taipei
    主機預設時區,若主機在台灣,請務必設置為「Asia/Taipei」,否則系統抓到的可能會有誤差。
    display_errors on
    是否顯示錯誤訊息?建議開啟!!否則網站變成空白時將很難進行除錯。
    file_uploads 1
    是否允許檔案上傳。需配合 upload_max_filesize, upload_tmp_dir, post_max_size 等設定。一般而言,上傳上限的設定,大小需求如下:memory_limit > post_max_size > upload_max_filesize
    max_execution_time 150
    每個程序最大允許執行時間(秒),0 表示沒有限制。這個參數有助於阻止劣質程序無休止的佔用伺服器資源。
    檔案上傳時,若檔案很大,頻寬卻很小,那麼此值需調大一點,例如上傳 10M 檔案需要花2分鐘,那此值就不要小於 120。
    max_file_uploads 300
    最多只能傳幾個檔案?請視需求設定之。
    max_input_time 120
    每個程序解析輸入數據 (POST, GET, upload) 的最大允許時間(秒)。
    -1 表示不限制。
    max_input_vars 5000
    表單可接收的變數數量,超過此數量,就可能無法完全接收表單內容。
    部份系統有匯入功能,匯入後若有表單確定畫面,通常會有很多變數,因此,調大此值有助於匯入資料的完整性。
    memory_limit 240M
    一個程序所能夠申請到的記憶體空間 (可以使用 K 和 M 作為單位)。 這有助於防止劣質程序消耗完伺服器上的所有記憶體。如果要取消記憶體限制,則必須將其設為 -1 。
    post_max_size 220M
    允許的 POST 數據最大字節長度。此設定也影響到檔案上傳。
    如果 POST 數據超出限制,那麼 $_POST 和 $_FILES 將會為空。
    要上傳大檔案,該值必須大於 upload_max_filesize 指令的值。
    如果啟用了記憶體限制,那麼該值應當小於 memory_limit 指令的值。
    short_open_tag 1
    是否允許使用「<? ?>」短標識。否則必須使用「<?php ?>」長標識。
    除非你的php程序僅在受控環境下運行,且只供自己使用,否則請不要使用短標記。
    如果要和XML結合使用PHP,可以選擇關閉此選項以方便直接嵌入「<?xml ... ?>」,
    不然你必須用PHP來輸出:<? echo '<?xml version="1.0"'; ?>
    本指令也會影響到縮寫形式「<?=」,它和「<? echo」等價,要使用它也必須打開短標記。
    upload_max_filesize 200M
    允許上傳的檔案的最大尺寸。

    修改後記得重新啟動 apache

    service apache2 restart
    
  2. 將Apache預設編碼設為UTF-8,避免網頁錯誤訊息為亂碼

    vi /etc/apache2/conf-available/charset.conf
    
  3. 檢查 /etc/apache2/sites-enabled/000-default.conf
    <VirtualHost *:80>
            ServerAdmin webmaster@localhost
    
            DocumentRoot /var/www
            <Directory />
                    Options FollowSymLinks
                    AllowOverride All
            </Directory>
            <Directory /var/www/html>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    #Order allow,deny
                    #allow from all
            </Directory>
    
            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>
    

    儲存後,重新啟動Apache即可

    service apache2 restart