allow_url_include 必须关闭以防止远程代码执行,应修改 php.ini 设为 Off 并重启服务;.htaccess 仅对 mod_php 有效;ini_set 无法动态修改;可用 ini_get 验证是否生效。

allow_url_include 是 PHP 的一个危险配置项,开启后允许通过 include()、require() 等函数直接包含远程 URL(如 http:// 或 https://)的文件,极易引发远程代码执行漏洞。生产环境中必须关闭。
直接修改 php.ini 文件
找到当前 PHP 使用的 php.ini 文件(可通过 php --ini 或 phpinfo() 查看路径),定位到 allow_url_include 行:
- 如果该行被注释(以
;开头),取消注释并设为Off:allow_url_include = Off
- 如果该行不存在,手动添加在
[PHP]段落下方即可。
修改后重启 Web 服务(如 Apache、Nginx + PHP-FPM)或 PHP 进程才能生效。
用 .htaccess 临时禁用(仅限 Apache + mod_php)
在网站根目录 .htaccess 中添加:
php_flag allow_url_include off
⚠️ 注意:此方式对 CGI/FastCGI/PHP-FPM 无效,仅适用于模块模式(mod_php)。
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目,让您快速入门TP5项目开发。
用 ini_set() 无法动态关闭
ini_set('allow_url_include', '0') 在运行时不起作用,因为 allow_url_include 属于 PHP_INI_SYSTEM 级别,只能在服务器配置中设置,不能用脚本修改。
检查是否已关闭
创建一个 PHP 文件,写入:
<?php echo ini_get('allow_url_include') ? 'ON' : 'OFF'; ?>输出 OFF 即表示已成功关闭。
不复杂但容易忽略

















