如何正确引用本地主机上 PHP、CSS 等的子目录(在 xampp 中)中的文件?

Posted

技术标签:

【中文标题】如何正确引用本地主机上 PHP、CSS 等的子目录(在 xampp 中)中的文件?【英文标题】:How do I properly reference files in subdirectories (in xampp) for PHP, CSS, etc. on localhost? 【发布时间】:2012-11-12 09:31:56 【问题描述】:

我在 win7 上运行 XAMPP 来测试使用 php/mysql/AJAX 的相当简单的网站,但遇到了无法正确引用文件的问题。

我知道C:\xampp\htdocshttp://localhost/“等效”,并且我在C:\xampp\htdocs\lorem_ipsum 中有一个项目子目录(即http://localhost/lorem_ipsum/)。其中还有一些文件夹(一个用于 php 脚本,一个用于 css 样式表等)。

我在引用这些子目录中的文件时遇到问题。

例如,在 lorem_ipsum/index.php 我使用以下行:

require_once 'http://localhost/lorem_ipsum/php/login.php'

导致错误的原因:

Warning: require_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\xampp\htdocs\lorem_ipsum\index.php on line 13

Warning: require_once(http://localhost/lorem_ipsum/php/login.php): failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\lorem_ipsum\index.php on line 13

Fatal error: require_once(): Failed opening required 'http://localhost/lorem_ipsum/php/login.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\lorem_ipsum\index.php on line 13

通过谷歌搜索,我发现这是某种“文件共享/安全”问题,但我完全不知道这意味着什么或如何解决它(我还是个初学者)。

当我使用以下 CSS 时,例如:

background-image:url('http://localhost/lorem_ipsum/images/bg.png')

背景是白色的,而不是“bg.png”。如果我使用'./images/bg.png',则相同。

我尝试了各种不同的方法来引用这些文件,但都没有奏效。我还尝试关闭任何防火墙,但也没有用。

我的终极问题是:为什么所有问题都与文件引用有关?

次要问题:PHP 和 CSS 错误是否相关,还是我把它们都搞砸了?我怎样才能阻止这种情况发生? apache/php 中是否有需要更改的设置,或者我只是编码错误?

【问题讨论】:

您需要通过绝对或相对于当前目录来要求它。不要使用 HTTP 来请求文件 【参考方案1】:

在 PHP 中,您应该从指定的 Document_Root 引用文件(在您的情况下为 C:\xampp\htdocs)。所以试试

require_once "/lorem_ipsum/phplogin.php";

如果文件被正确托管,css 中的 url 应该 工作。但你也可以尝试这样的相对路径:

background-image:url('/lorem_ipsum/images/bg.png');

【讨论】:

当您也想将网站移至某个真实主机时,使用亲戚会有所帮助。这样你就不必重写代码库,因为它们在服务器上的文件结构比你做的要不同。 啊哈!当我之前尝试使用相对路径时,它不起作用,我想出了原因 - 由于某种原因 include_path 被设置为不是 htdocs 文件夹的东西。 set_include_path('.;C\xampp\htdocs\lorem_ipsum');require_once '/php/login.php'; 似乎可以工作,当然现在我需要最终调试 login.php :) 至于 CSS ......仍然不起作用。我想知道 CSS 是否有一种“set_includes_path”? .css 文件位于 /lorem_ipsum/css 中,如果这很重要的话。 (我知道index.php正确引用了css文件,这是唯一不起作用的css) CSS 不使用任何包含路径的概念。它将路径与您的根 url 进行比较并发出另一个 HTTP 请求。确保您可以通过http://localhost/lorem_ipsum/images/bg.png 访问您的文件。如果这不起作用,那是你的问题,而不是文件路径的陈述方式 是的,按照您的建议,我可以很好地访问文件。我也确定正确引用了 CSS,因为我在 .css 文件中所做的所有其他更改都适用。猜猜我会多修改一些东西,看看我是否无法在意想不到的地方找到问题。【参考方案2】:

给require_once命令定义变量,因为HTTP://协议在PHP ini上的很多服务器上是不允许的,以减少一些冲突和麻烦。

<pre>
&lt;?
require_once(dirname(__FILE__) . "php/login.php")

//next script here..... 

?&gt;
</pre>

或者你可能想要 make include 命令:

<pre>
&lt;?
include "php/login.php";

//do something here..


?&gt;
</pre>

参考:http://www.php.net/manual/en/function.require-once.php / http://www.php.net/manual/en/function.include.php

对于 css 是:

 <pre>
background-image:url('images/bg.png')
</pre>

【讨论】:

以上是关于如何正确引用本地主机上 PHP、CSS 等的子目录(在 xampp 中)中的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测用户是不是在 PHP 中的本地主机上?

如何删除本地主机上上传的文件以及 PHP 中的用户帐户

如何在本地主机上使用 htaccess 制作 seo url? [关闭]

在 PHP 脚本上运行 Cron 作业,在 Windows 的本地主机上

Adblock Plus 阻止本地主机上的 css

如何在本地主机上运行 Apache Wild Card 脚本?