当使用 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. vue常考面试题

    组件中 data 什么时候可以使用对象? 这道题其实更多考的是 JS 功底: 组件复用时所有组件实例都会共享 data,如果 data 是对象的话,就会造成一个组件修改 data 以后会影响到其他所有 ...

  2. (2.1)mysql升级与降级

    (2.1)mysql升级与降级 转自:深入浅出mysql数据库开发.优化与管理第二版 1.mysql升级 2.mysql降级

  3. Charles 的界面详解

    后续补充.......... 一.主导航栏 1.File.Edit.View.Proxy.Tools.Window.Help 2.View栏 (1)structure视图是将网络请求按访问的域名分类: ...

  4. svg合并

    假如页面有多个svg图标要加载,多次加载不利,可将多个svg合并为一个加载 如下有两个svg <svg xmlns="http://www.w3.org/2000/svg" ...

  5. ZY

    2017*****1022:我是石翟夫:我的爱好是计算机: 我的码云个人主页是:https://gitee.com/S_DiF/events 我的第一个项目地址是:https://gitee.com/ ...

  6. python绘制中文词云图

    准备工作 主要用到Python的两个第三方库 jieba:中文分词工具 wordcloud:python下的词云生成工具 步骤 准备语料库,词云图需要的背景图片 使用jieba进行分词,去停用词,词频 ...

  7. 二维码图片以字符串的形式保存DB,已文件流显示页面上

    以下是生成二维码的方法,我只用其中一个方法 这个需要引用ZXing.DLL 链接:https://pan.baidu.com/s/1mCTwHiAm_awtsPcibAotZw 提取码:ufp6 pu ...

  8. [MSF]server/capture/http_javascript_keylogger键盘记录

    server/capture/http_javascript_keylogger DEMO使用的官方的效果图: 使用方法: show options 看看 msf auxiliary(server/c ...

  9. C#、winform、wpf将类控件放进工具箱里

    有时我们需要将vs自带的控件的某一些方法或属性进行一些修改,我们通常会新建一个类来继承它然后对它的方法或属性进行修改,那么我们如何将修改完成的控件类变成可视化控件放到工具箱中便于使用呢? 很简单,只要 ...

  10. synchronized锁级别的一个坑

    在实现一次对限流接口访问时,我错误的使用了单例+synchronized修饰方法的形式实现,这样在限流方规则为不同接口不同限制,单独限制时,同一个实例中的所有被synchronized修饰的方法竞争同 ...