警告:require_once():http://在服务器配置中禁用包装器allow_url_include = 0

时间:2014-04-25 06:17:46

标签: php include

我试图通过

在页面中包含一个php文件
  require_once(http://localhost/web/a.php)

我收到错误

 Warning: require_once(): http:// wrapper is disabled in the server configuration by   allow_url_include=0

我在php.ini中更改了allow_url_include=1,但是我认为并不是每个人都会让我更改他们的php.ini文件。

那么,有没有办法实现这个目标?

9 个答案:

答案 0 :(得分:55)

生成警告是因为您使用的是所包含文件的完整URL。这不是正确的方法,因为这样您将从Web服务器获取一些HTML。使用:

require_once('../web/a.php');

这样网络服务器就可以执行脚本并提供输出,而不仅仅是提供源代码(当前案例导致警告)。

答案 1 :(得分:15)

尝试在我的Wordpress主题中包含PHP文件时遇到了同样的错误。通过使用dirname(__FILE__)引用文件名,我能够绕过它。我无法使用相对路径,因为我的文件将被包含在整个主题的不同位置,因此类似require_once '../path-to/my-file'的内容将无效。

require_once get_template_directory_uri() . '/path-to/my-file'替换require_once dirname( __FILE__ ) . '/path-to/my-file'就可以了。

答案 2 :(得分:11)

尝试使用

<?php require_once($_SERVER['DOCUMENT_ROOT'].'/web/a.php'); ?>

答案 3 :(得分:6)

您必须将路径放到文件中。例如:

require_once('../web/a.php');

你无法从互联网(使用http协议)获取文件,但它受到限制。这些文件必须位于同一台服务器上。有可能看到对方(权利)

Dir-1 -
         > Folder-1 -> a.php
Dir-2 -
         > Folder-2 -> b.php

To include a.php inside b.php => require_once('../../Dir-1/Folder-1/a.php');
To include b.php inside a.php => require_once('../../Dir-2/Folder-2/b.php');

答案 4 :(得分:2)

require_once('../web/a.php');

如果这对任何人都不起作用,那么在项目的任何地方都可以包含以下文件。

require_once dirname(__FILE__)."/../../includes/enter.php";

此代码将从当前目录之外的2个目录中获取文件。

答案 5 :(得分:0)

require_once(APPPATH.'web/a.php');

在codeigniter中为我工作

检查reference

答案 6 :(得分:0)

WORDPRESS主要出现此错误:
解决方案:
在远程实时托管SERVER或“本地服务器”上找到您的PHP安装目录
如果是Windows操作系统
例如,如果您使用xampp或wamp网络服务器。它将在xammp目录中 'c:\ xammp \ php'
注意: 对于Unix / Linux操作系统,在Web服务器中找到您的PHP目录

查找并编辑 PHP.INI 文件
查找'allow_url_include'
将其替换为“ on”值
allow_url_include =打开
为您保存 php.ini 重新启动您的网络服务器。

答案 7 :(得分:0)

echo file_get_contents('http://localhost/web/a.php'); //最佳示例

答案 8 :(得分:0)

include和require函数需要文件路径,但是您提供的是文件URI 。该参数不应为包含http / https的参数。

您的代码应类似于:

include ("folder/file.php");