当使用 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设置的值,引导用户使用

如何在 Apache 里修改 PHP 配置的更多相关文章

  1. redis如何在spring里面的bean配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  2. 启动phpstyle Apache的80端口被win7的System PID=4的进程占用的解决方法 以及 如何在phpStyle里发布程序

    学习前端是,用到Ajax,php语言,操作mysql数据库,浏览器无法解析php代码(把源码输出):原因,我之前用的是tomcat服务器写jsp,servlet,php用的是apache服务器,没有配 ...

  3. Apache服务器的简单配置与安全策略

    在之前讲的关于weevely后门分析中,有说到利用Apache的配置文件.htaccess来隐藏php后门.关于.htaccess文件的用途,在此结合Apache服务器的具体配置作一详解,也算是自己的 ...

  4. centos7 apache httpd安装和配置django项目

    一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装http ...

  5. 如何在 apache 中设置缓存有效时间

    今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...

  6. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  7. (转)Apache+Tomcat集群配置

    本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是ht ...

  8. 使用quartz实现不重启服务器修改自定义配置

    为了方便维护系统,开发中通常会设置一些自定义参数,写在单独的配置文件里,需要调整时可直接登录服务器修复配置文件,而不需要修改程序.但尴尬的是,web服务器并不会自动重新加载配置文件,重启服务器又会中断 ...

  9. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

随机推荐

  1. 《图解HTTP》读书笔记(六:HTTP状态码)

    状态码的职责是当客户端向服务器端发送请求时, 描述返回的请求结果. 借助状态码, 用户可以知道服务器端是正常处理了请求, 还是出现了错误. 状态码类别 HTTP状态码由三个十进制数字组成,第一个十进制 ...

  2. ADB——adb devices unauthorized

    我们只有在手机打开USB调试,并且允许电脑对其进行调试的前提下才可以用ADB进行自动化操作手机,如果出现unauthorized提示的话就是说明手机没有允许电脑对其调试 这个时候通常手机回弹出允许调试 ...

  3. Module 3 - Azure - Web Apps

     Module 3 - 微软云 Azure - Web Apps 1. Create new Web application in the Azure Portal Azure Portal -> ...

  4. [LeetCode] 139. Word Break_ Medium tag: Dynamic Programming

    Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine ...

  5. C语言之指针若干问题

    1.指针变量的赋值问题. 常常有偷懒的小伙子,这样赋值 int *Pointer =  3:/ 这是给Pointer 所指的变量赋值,刚创建Pointer时,它所指的变量是不固定的,可能是某个重要的系 ...

  6. 从零开始一起学习SLAM | 掌握g2o边的代码套路

    点"计算机视觉life"关注,置顶更快接收消息! 小白:师兄,g2o框架<从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码>,以及顶点<从零开始 ...

  7. 基于C#实现的自动化测试框架:发布自动触发自动化回归测试

    接口自动化测试用例完成以后,以前都是发布以后手动运行测试用例.虽然手动运行下脚本也就是一个F5的事情,但是离自动化测试的标准差得很远.这两天有了个大胆的想法,想要实现以下发布时直接触发自动化回归测试用 ...

  8. Oracle exp和expdp对数据进行备份

    以下给出两个示例,详细内容需要查阅手册: exp system OWNER=ZLTX FILE=ZLTX20190123.DMP expdp system DUMPFILE=ZLTX20190123. ...

  9. linux下如何查看某软件是否已安装

      因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm - ...

  10. elasticsearch数据备份与sshfs建立共享文件

    1.背景: 最近公司为了适应业务的发展,利用elasticsearch搜索引擎搭建了两个节点.为了防止数据丢失的特殊情况,需要定时做数据备份,而由于elasticsearch为两个节点分别在不同的服务 ...