zoukankan      html  css  js  c++  java
  • 如何在 Apache 里修改 PHP 配置

         当使用 PHP 作为 Apache 模块时,也可以使用 Apache 配置文件(例如:httpd.conf) 和 .htaccess 文件中的指令来修改 PHP 的配置

    设定,不过需要有 "AllowOverride Options" 或 "AllowOverride All" 权限才可以

         哪些指令可以让用户在 Apache 配置文件内部修改 PHP 的配置?

         属于 PHP_INI_ALL、PHP_INI_PERDIR、或 PHP_INI_SYSTEM 中的一个,可以参考看 php.ini 配置选项列表:http://php.net/manual/zh/ini.list.php

         php.ini 配置选项列表里面的"可修改范围"决定了该配置在什么情况下可以被配置,可以参考:http://php.net/manual/zh/configuration.changes.modes.php

         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 

         设定指定的指令的值,不能用于 .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设置的值,引导用户使用

  • 相关阅读:
    使用Areas分离ASP.NET MVC项目
    将json转化为model
    简单的三层asp.net webForm使用Ninject实现Ioc
    本机连接虚拟机Oracle时报错的解决办法
    老电脑升级
    安装Oracle时选择桌面类和服务器类的区别
    64位操作系统下启用32位模式
    log4net在WinForm和ASP.net下的设置
    Delphi2009下编译提示“无法找到“Excel_TLB”
    Delphi 中的MD5实现方法(转)
  • 原文地址:https://www.cnblogs.com/leeyongbard/p/10538746.html
Copyright © 2011-2022 走看看