[转载]allow_url_include

[转载]allow_url_include

原文地址:allow_url_include 作者:粤之豪
 allow_url_include"0"PHP_INI_ALLPHP_INI_SYSTEM in PHP 5. Available since PHP 5.2.0.
 
 默认状态是关闭的。在php.ini 修改为;
 ;Whether to allow include/require to open URLs (like http:// or ftp://) as files.
 ; http://php.net/allow-url-include
 allow_url_include = on

a.php:
  <?php
    $data =  include 'http://www.domain.com/b.php';
    var_dump($data);
  ?>

b.php:
<?php
   return   array('username'=>'lukai');
?>
posted @ 2017-11-23 14:55 Newman·Li 阅读( ...) 评论( ...) 编辑 收藏
<think>好的,我现在需要帮助用户找到如何开启PHP配置项allow_url_include的方法。首先,我需要回忆一下PHP的配置相关知识。记得allow_url_include是一个安全相关的配置,默认情况下是关闭的,因为它允许通过URL包含远程文件,可能存在安全风险。用户可能因为某些应用需求需要开启这个选项。 首先,我应该确定修改PHP配置的常规方法,通常是编辑php.ini文件。用户可能不知道这个文件的位置,所以需要指导他们如何找到php.ini的位置。常用的方法是通过phpinfo()函数来查找,或者使用命令行查询。比如运行php --ini命令。 接下来,在php.ini文件中找到allow_url_include这一项,通常它和allow_url_fopen在一起。默认情况下这个选项是Off,需要将其改为On。然后保存文件,并重启Web服务器(如Apache、Nginx)或者PHP-FPM服务,使配置生效。 另外,用户可能没有权限直接修改php.ini,或者在共享主机环境下,这时候可能需要通过.htaccess文件来设置,但前提是服务器允许覆盖配置。使用ini_set函数在PHP脚本中设置也是一种方法,不过要注意allow_url_include可能被设为PHP_INI_SYSTEM,只能在php.ini或httpd.conf中修改,无法通过脚本动态设置,这时候ini_set会无效。 还需要提醒用户注意安全问题,开启这个选项可能导致远程文件包含漏洞,建议只在必要的情况下启用,并确保包含的文件来源可信。此外,不同的PHP版本可能有不同的默认配置,需要确认当前使用的版本。 可能还需要检查是否有其他相关的配置项影响allow_url_include的行为,例如open_basedir的设置,或者是否启用了安全模式(虽然安全模式在PHP5.4之后已经被移除)。如果有错误日志,查看日志可以帮助排查问题。 总结步骤应该是:1. 定位php.ini;2. 修改allow_url_include为On;3. 重启服务;4. 验证是否生效。同时提供替代方法和安全提示。</think>要开启PHP的`allow_url_include`配置项,请按以下步骤操作: --- ### **步骤1:定位php.ini文件** 1. **通过PHP脚本查找**: 创建一个包含`<?php phpinfo(); ?>`的PHP文件,在浏览器中运行后搜索`Loaded Configuration File`,即可找到当前使用的`php.ini`路径[^3]。 ```php <?php phpinfo(); ?> ``` 2. **通过命令行查找**: 执行命令: ```bash php --ini | grep "Loaded Configuration File" ``` --- ### **步骤2:修改php.ini配置** 1. 用文本编辑器打开`php.ini`文件: ```bash sudo nano /路径/php.ini # 根据实际路径调整 ``` 2. 搜索以下配置项并修改: ```ini ; 默认值为Off,改为On allow_url_include = On ``` 3. 保存文件并退出编辑器。 --- ### **步骤3:重启Web服务** - **Apache**: ```bash sudo systemctl restart apache2 # Debian/Ubuntu sudo systemctl restart httpd # CentOS/RHEL ``` - **Nginx + PHP-FPM**: ```bash sudo systemctl restart php-fpm sudo systemctl restart nginx ``` --- ### **替代方法(若无法修改php.ini)** 1. **通过.htaccess文件**(仅Apache): 在网站根目录的`.htaccess`中添加: ```apache php_flag allow_url_include on ``` 2. **通过PHP脚本动态设置**(需权限允许): ```php ini_set('allow_url_include', '1'); ``` > 注意:若`allow_url_include`的权限为`PHP_INI_SYSTEM`,此方法无效[^1]。 --- ### **验证配置是否生效** 1. 创建一个PHP文件并检查配置: ```php <?php var_dump(ini_get('allow_url_include')); ?> ``` 输出应为`string(1) "1"`。 --- ### **安全警告** - **风险提示**:开启`allow_url_include`可能导致远程文件包含(RFI)漏洞,攻击者可利用此功能执行恶意代码[^2]。 - **建议**: - 仅在绝对必要时启用。 - 确保包含的文件来源可信。 - 结合`open_basedir`限制文件访问范围。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值