-3

我在我的网站上创建了一个带有 surfix .php 的页面 {在参加了 php 速成课程之后},我收到了以下错误消息:

警告:include(): http:// wrapper 在服务器配置中被第 12 行 /home/u259153114/public_html/php_site/about.php 中的 allow_url_include=0 禁用警告:include( http://musiccafefriends.neq3.com /php_site/header.php):无法打开流:在第 12 行的 /home/u259153114/public_html/php_site/about.php 中找不到合适的包装器 警告:include(): 无法打开' http://musiccafefriends。 neq3.com/php_site/header.php' 在第 12 行的 /home/u259153114/public_html/php_site/about.php 中包含 (include_path='.:/usr/lib/php') 警告:include(/php_site/includes/nav.php): 无法打开流:在第 13 行的 /home/u259153114/public_html/php_site/about.php 中没有这样的文件或目录usr/lib/php') 在第 13 行的 /home/u259153114/public_html/php_site/about.php

所以现在我做错了什么在我看来,由于某种原因,neq3 服务器阻止了我对任何想法的编码

4

4 回答 4

2

此消息相当不言自明:

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

意味着您正在尝试包含远程文件(这是非常非常糟糕的主意),例如:

include('http://...../file.php');

但是(通常出于安全原因)此服务器上禁用了此功能。我建议复制远程文件并将其包含在本地。

于 2013-07-06T18:59:59.907 回答
1

正如 Orangepill 所说,allow_url_include 的默认设置是禁用它。

不过,除非我弄错了,否则看起来您要包含的文件实际上位于同一台服务器上(它们似乎都位于名为 php_site 的目录中)。如果是这种情况,您可以从以下位置更改您的包含:

include('http://musiccafefriends.neq3.com/php_site/header.php');

至:

include('header.php');

如果它们未托管在同一台服务器上,最好的办法是将要包含的文件移动到要包含它的服务器上。

allow_url_include默认情况下禁用以防止跨站点脚本,因为代码将在另一端进行评估,然后再包含在您的一端,这意味着可以在您的服务器上注入和运行讨厌的东西。

至于你的第二个问题:

Failed opening '/php_site/includes/nav.php'

/路径开头的斜线使其成为“绝对路径”,因此 PHP 正在文件系统的根目录中查找该文件,而不是找到它。您正在当前文件夹下名为“includes”的文件夹中查找名为“nav.php”的文件。如果您将 include 更改为include('includes/nav.php'),它应该可以工作。

于 2013-07-06T19:09:04.533 回答
1

您正在尝试在脚本中包含一个远程文件。而不是这样做,您可以只复制外部文件的内容,将其放入服务器上的文件中然后包含它。

于 2013-07-06T19:00:54.930 回答
0

正如错误所述,您的主机将“allow_url_include”设置为 false(默认值)。这是为了避免包含跨站点脚本。

您在此处的选项是将 allow_url_include 指令更改为 1 或将资产复制到本地计算机并通过文件系统引用包含它。

于 2013-07-06T18:59:09.000 回答