当使用 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. Publisher/Subscriber

    public interface IPublisher { void Publish<T>(T data); void Subscribe<T>(object subscrib ...

  2. redis基础2

  3. sql相同表不同查询条件合并显示

    关键字:FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. select a.createtime, ISNULL(lp, 0) lp , ISNULL(hp, 0) ...

  4. MQTT----物联网常用的消息队列协议

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建 ...

  5. JMeter-性能测试监控(解决.sh文件的启动)

    下载插件 https://jmeter-plugins.org/downloads/old/ 已安装了jmeter-plugins-manager,装的这个不知道生没生效.... 2.问题:启动就显示 ...

  6. Hydra(爆破神器)

    PS:这款暴力密码破解工具相当强大,支持几乎所有协议的在线密码破解,其密码能否被破解关键在于字典是否足够强大.对于社会工程型渗透来说,有时能够得到事半功倍的效果.本文仅从安全角度去探讨测试,使用本文内 ...

  7. Xamarin.Forms 开发资源集合

    收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 Snppts: Xamarin Forms UI Snippets. Prebuilt Templat ...

  8. 微信小程序封装年月日时分组件

    第一步,在page下新建component文件,放你封装的小组件,和vue里的component差不多 第二步,在需要使用的组件的.json文件中添加usingComponents 第三步,在页面中引 ...

  9. newcode网学习笔记(1)

    1.类的内存结构一开始指向的是虚函数表,指向虚函数表的指针为4个字节(32位系统)[类的内存结构最前面的是指向虚函数表的指针] 2.包含标准库文件以及相关命名空间,则系统不允许用户重新定义标准库函数, ...

  10. gRPC 在 Python中的应用

    python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. hello.proto 简介 在python ...