如何在 Apache 裏修改 PHP 配置

     當使用 PHP 做爲 Apache 模塊時,也可使用 Apache 配置文件(例如:httpd.conf) 和 .htaccess 文件中的指令來修改 PHP 的配置php

設定,不過須要有 "AllowOverride Options" 或 "AllowOverride All" 權限才能夠git

     哪些指令可讓用戶在 Apache 配置文件內部修改 PHP 的配置?github

     屬於 PHP_INI_ALL、PHP_INI_PERDIR、或 PHP_INI_SYSTEM 中的一個,能夠參考看 php.ini 配置選項列表:http://php.net/manual/zh/ini.list.phpapache

     php.ini 配置選項列表裏面的"可修改範圍"決定了該配置在什麼狀況下能夠被配置,能夠參考:http://php.net/manual/zh/configuration.changes.modes.phpcentos

     PHP_INI_* 模式定義了一個 PHP 指令在什麼時候何地,是否可以被設定,手冊中的每一個指令都有其所屬的模式。例若有些指令能夠在 PHP 腳本中用 ini_set安全

() 來設定,而有些只能在 php.ini 或 httpd.conf 中,例如:output_buffering 指令是屬於PHP_INI_PERDIR(可在 php.ini,.htaccess 或 httpd_conf 中設定),服務器

於是就不能使用 ini_set() 來設定,可是像 display_errors 指令屬於 PHP_INI_ALL 於是就能夠在任何地方被設定,包括使用 ini_set()分佈式

     php_admin_value name value ide

     設定指定的指令的值,不能用於 .htaccess 文件,任何用 php_admin_value 設定的指令都不能被 .htaccess 或 virtualhost 中的指令覆蓋性能

     php_admin_flag name on | off

     用來設定布爾值的配置指令 ,不能用於 .htaccess 文件,任何用 php_admin_flag 設定的指令都不能被 .htaccess 或 virtualhost 中的指令覆蓋

     參考常見 apache php_admin_flag、php_admin_value 設置:

     https://hcldirgit.github.io/2017/10/13/Php/7.%20%E5%B8%B8%E8%A7%81apache%20php_admin_value%20php_admin_flag%20%E8%AE%BE%E7%BD%AE/

     注意:php_admin_flag、php_admin_value 通常用於 httpd.conf

     php_value name value 

     設置指定的值,只能用於 PHP_INI_ALL 或 PHP_INI_PERDIR 類型的指令

     php_flag name on | off

     用來設定布爾值的配置指令,只能用於 PHP_INI_ALL 或 PHP_INI_PERDIR 類型的指令

     php_value、php_flag 主要用於 .htaccess 中,但若是是 PHP_INI_ALL 類型的指令能夠在任何地方被設定

     而 value 和 flag 的區別在於:value 用於設置值,flag 用於只能是 on | off

 

--------------------------------------------------------2019/03/16 更新---------------------------------------------------------

關於 .htaccess 文件

參考文章:

https://blog.csdn.net/u013927110/article/details/41414091

https://www.centos.bz/2017/11/apache-htaccess%E6%96%87%E4%BB%B6%E8%AF%A6%E8%A7%A3%E5%92%8C%E9%85%8D%E7%BD%AE%E6%8A%80%E5%B7%A7%E6%80%BB%E7%BB%93/

    .htaccess 文件是一個純文本文件,它裏面存放着 apache 服務器配置的相關指令,。htaccess 主要的做用有:URL 重寫、自定義錯誤頁面等。主要體如今

僞靜態的應用、圖片防盜鏈、自定義404錯誤頁面、禁止訪問指定文件類型等等,.htaccess 的做用範圍針對當前目錄以及該目錄的子目錄

    有時候咱們須要修改 apache 的一些默認配置,可是又不想對 apache 的httpd.conf 修改太多,咱們就可使用

.htaccess(分佈式配置文件) 來達到目的,.htaccess 提供了針對每一個目錄改變配置的方法,即在一個特定目錄中放

置一個包含指令的文件,其中的指令做用於此目錄以及其全部的子目錄

      咱們須要讓 apache 來讀取它,這就須要修改 httpd.conf 文件

      apache 都有本身默認的項目根目錄,在 DocumentRoot "D:/www" 下面,有一個<Directory>的東西,它裏面有這樣一段代碼 AllowOverride None ,若是

咱們把 None 改爲 All,那麼在 www 目錄下的全部項目都能讀取到 .htaccess 

      雖然僅僅只是改動一個單詞,可是這裏面的弊端也是挺多的,好比說:每次訪問項目的時候,apache 都會對全部的 .htaccess 文件進行讀取,處理速度大

大下降;每個項目都能修改 apache 配置,安全性大大下降

      通常狀況下都避免使用 .htaccess 緣由主要有:

     1. 性能:若是 AllowOverride 啓用了 .htaccess ,那麼 apache 須要在每一個目錄中查找 .htaccess 文件,因此,不管是否真正用到,啓用 .htaccess 都會致使

性能降低,另外,對每個請求,都須要讀取一次 .htaccess 文件

     2. 安全性:容許用戶修改 apache 配置,可能會致使一些意想不到的問題,因此須要認證考慮是否給與用戶這樣的權限。可是,若是給與用戶比較少的權限

可能又沒法知足用戶的需求,會帶來額外的技術支持,因此,須要明確告訴用戶已經給與他們的權限,說明AllowOverride設置的值,引導用戶使用

相關文章
相關標籤/搜索