程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP.INI配置文件漫游2

PHP.INI配置文件漫游2

編輯:關於PHP編程

文章第一部分已經帶領你領略了php.ini文件的結構,並且說明了如何修改PHP查找路徑、差錯處理,以及解析器的相關選項。第二部分將深入配置文件,內容包括如何激活PHP擴展選項、針對PHP腳本設置資源限制,以及通過PHP腳本動態改變配置變量。 激活擴展選項 PHP可以使用很多不同的擴展選項。在UNIX系統中,擴展選項需要在編譯時創建;而對於Windows,二進制DLL文件將隨PHP發布而將自己包括進去。變量extension_dir包括了PHP應當查看相關擴展選項的目錄名。 extension_dir = "C:Program FilesInternet ToolsApacheinphp4extensions" Windows下的PHP包括了20種不同的擴展選項,並且全部都列在了php.ini文件中(通過注釋)。要激活某個特定的擴展選項只需要將相應行首的分號去掉並重啟服務器就可以了。如果要禁用某個擴展選項(比如在需要提升系統性能的情況下),只需要在行首重新添加分號。 如果擴展選項沒有列在php.ini文件中,可以使用變量extension,然後將相應DLL文件名傳遞給此變量。 extension=php_domxml.dll extension=php_dbase.dll 設置extension-specific變量 變量extension-specific被存放在配置文件中一個單獨的區域。比如,所有同MySQL擴展功能相關的變量都應當存儲在php.ini中的[MySQL]區域。 如果需要使用PHP的mail()函數,則需要設置以下三個變量。當通過PHP mail()函數發送電子郵件信息時需要使用SMTP以及變量sendmail_from(Windows系統)或變量sendmail_path(UNIX系統)。對於Windows,這些變量設置了所用到的SMTP服務器以及顯示在電子郵件信息中的“From:”地址;而對於UNIX,變量sendmail_path則對郵件傳輸設置了MTA(郵件傳輸代理,mail transfer agent)的路徑。 SMTP = myserver.localnet.com sendmail_from = [email protected] sendmail_path = /usr/sbin/sendmail 變量java.class.path、java.home、java.library以及java.library.path全部用來設置查找Java類以及庫的路徑。這些值將被Java擴展所使用,所以如果希望PHP能正確的同Java程序進行集成,則必須確保這些變量被正確的設置。 java.class.path = .php_java.jar java.home = c:jdk java.library = c:jdkjreinhotspotjvm.dll java.library.path= . 變量session.save_path指定了保存會話信息所需的臨時目錄。通常而言,此目錄默認為/tmp,但由於在Windows系統中此默認目錄並不存在,所以你必須將其重新設置為正確的Windows臨時目錄,否則會話處理程序將會在調用session_start()函數時彈出討厭的出錯信息。同時可以通過變量session.cookie_lifetime來控制會話cookie的有效期。 session.save_path = c:windows emp session.cookie_lifetime = 1800 安全設置 在php.ini中,有很多同PHP安裝的安全問題相關的變量。其中最有趣的是safe_mode變量,建議針對ISP以及共享主機服務(shared-hosting services)對其進行設置,此變量將對用戶對PHP的使用范圍進行限制。 safe_mode = Off 當safe mode打開的時候,可以通過變量safe_mode_include_dir指定在何目錄中查找相關文件。通過將二進制程序放在特定目錄並使用safe_mode_include_dir變量將目錄告之PHP,PHP將對可使用exec()命令運行PHP腳本的程序種類進行限制。在此目錄中僅二進制文件可以通過exec()命令進行訪問。 safe_mode_include_dir = /usr/local/lib/php/safe-include safe_mode_exec_dir = /usr/local/lib/php/safe-bin 還可以通過變量open_basedir來限制文件操作。此變量將設置作為文件操作根(root)的目錄名。此變量設置後,對於PHP來說,存放在此目錄樹以外的文件將無法訪問。這對於在共享系統中將用戶限制在各自的home或者Web目錄是一種很好的方法。 open_basedir = /home/web/ 變量max_execution_time設置了在強制終止腳本前PHP等待腳本執行完畢的時間,此時間以秒計算。當腳本進入了一個無限循環狀態時此變量非常有用。然而,當存在一個需要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會導致操作失敗。在這樣的情況下必須考慮將此變量值增加,以避免PHP在腳本正在執行某些重要過程的時候將腳本關閉。 max_execution_time = 90 剛提到了上傳,現在來看看如何配置uploads變量以及form變量。 配置文件上載以及表單變量 如果我們在文章前面所討論安全配置所提供的安全強度還不能滿足你的要求,可以通過關閉文件上傳或設置每次上傳最大文件尺寸限制來進一步提高安全強度。以上兩種功能將分別通過變量file_uploads和upload_max_filesize來實現。通常來說,除非系統中有為接收文件而設計的應用程序(例如基於Web FTP服務的圖片冊),你應當設置一個相對較小的文件尺寸限制值。 file_uploads = On upload_max_filesize = 2M 如果你對於上傳文件並不關心,但在PHP應用程序中使用了大量的表單,這裡有兩個變量將會讓你產生很大的興趣。首先是變量register_globals,它解決了PHP開發人員長期以來的心頭之痛。在PHP 3.x中,此變量默認為On。由此當提交表單時表單變量將自動的轉換成PHP變量。 在PHP 4.x中,出於安全考慮,此變量默認設置為Off。由此,表單變量將只能通過特定的$_GET以及$_POST進行訪問。這也造成了很多用PHP 3.x編寫的腳本在運行時出現問題,要求開發人員重寫腳本並對其重新測試。比如,輸入到表單域中的值對於PHP 3.x腳本來說將可以理解為$email;而在PHP 4.x腳本中卻被作為$_POST[email]或者$_GET[email]。 通常情況下可以將此變量設置為Off,這樣可以對通過表單進行的腳本攻擊提供更為安全的防范措施。如果需要考慮到對早期PHP 3.x腳本的兼容問題,則應當置於On。 register_globals = Off 同表單提交相關的一個變量是post_max_size,它將控制在采用POST方法進行一次表單提交中PHP所能夠接收的最大數據量。似乎不大可能需要將默認的8 MB改得更大。相反,應當適當將其降到更為實際的數值。但如果希望使用PHP文件上傳功能,則需要將此值改為比upload_max_filesize還要大。 post_max_size = 8M 在PHP 5中增加了max_input_time變量。此變量可以以秒為單位對通過POST、GET以及PUT方式接收數據時間進行限制。如果應用程序所運行環境處在低速鏈路上,則需要增加此值以適應接收數據所需的更多時間。 max_input_time = 90 性能調整 你還可以通過調整一些變量值來提升PHP解析器的性能。為了避免正在運行的腳本大量使用系統可用內存,PHP允許定義內存使用限額。通過memory_limit變量來指定單個腳本程序可以使用的最大內存容量: memory_limit = 8M 變量memory_limit的值應當適當大於post_max_size的值。 另一項可以用於提高性能的方法是禁用變量$argc以及$argv,這兩個值被用於存放在命令行中傳遞給應用程序的參數數量以及實際參數值。 register_argc_argv = false 類似,還可以禁用$HTTP_GET_VARS以及$HTTP_POST_VARS,因為在使用$_GET以及$_POST的今天你不大可能用到前兩種方式。禁用此功能可以帶來性能上的提升,但這只能通過PHP 5中的變量register_long_arrays實現。 register_long_arrays = false 函數ini_set() 最後,需要注意ini_set()函數。當PHP讀取php.ini配置文件中的所有設置信息的同時,它還提供了采用ini_set()函數根據per-script原則更改這些設置的功能。此函數接收兩個參數:需要調整的配置變量名,以及變量的新值。例如,在某腳本出現時增加最大執行時間(maximum execution time): 這樣的設置將僅僅影響被設置的腳本。一旦腳本執行完畢,該變量將自動恢復到原始值。 如果PHP應用程序運行在一個共享服務器上,你不大可能可以訪問到主php.ini配置文件。這時,函數ini_set()就可以允許根據特殊要求對PHP配置做動態修改,這將會給你帶來很大的方便。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved