为什么这样做:
<?php include "includes/top_nav.php"; ?>
为什么这对我不起作用?
<?php include "http://localhost/includes/top_nav.php"; ?>
答案 0 :(得分:5)
可能在该服务器上禁用了URL fopen包装器
http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
答案 1 :(得分:2)
我看到两个可能的原因。
首先,您的服务器可能未配置为允许访问URL文件。在这种情况下的错误将显示“在服务器配置中禁用URL文件访问”
如果包含确实有效,但不包括您的期望,那么这就是另一个故事。在这种情况下,理解的关键是如何处理这样的请求。在执行您共享的脚本时,您的服务器将执行HTTP请求(自身)并请求top_nav.php
的输出。这是对服务器的全新请求,因此有关 原始 请求的详细信息不再有效。
请求将来自不同的用户(即Apache),位于不同的IP地址(即您的服务器地址,而不是原始客户端),具有不同的cookie,具有不同的$_GET
数据和没有$_POST
数据。
因此,如果top_nav.php
以任何方式检查服务器变量,环境变量,PHP变量或渲染时的任何其他运行时状态,则会失败。
答案 2 :(得分:1)
您需要按URL fopen wrappers启用in the documentation,即使启用了{{3}},也无法使用Windows。
答案 3 :(得分:0)
如果启用了“URL fopen wrappers” PHP(它们是默认的 配置),你可以指定 要使用URL包含的文件(通过 HTTP或其他支持的包装器 - 请参阅 支持的协议/封装器列表 对于协议列表而不是 本地路径名。
服务器上的URL fopen包装器有什么价值?