我在win7上运行XAMPP来测试使用PHP / MySQL / AJAX的相当简单的站点,并且遇到了无法正确引用文件的问题。
我知道C:\xampp\htdocs
与http://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中是否有需要更改的设置,或者我只是编码错了?
答案 0 :(得分:3)
在PHP中,您应该引用指定的Document_Root中的文件(在您的情况下为C:\ xampp \ htdocs)。所以试试
require_once "/lorem_ipsum/phplogin.php";
如果正确托管文件,css 中的url应工作。但您也可以尝试相对路径,如:
background-image:url('/lorem_ipsum/images/bg.png');
答案 1 :(得分:0)
将require定义为require_once命令,因为PHP ini上的多个服务器上不允许使用HTTP://协议来减少一些冲突和麻烦。
<pre>
<?
require_once(dirname(__FILE__) . "php/login.php")
//next script here.....
?>
</pre>
或者你想要make include命令:
<pre>
<?
include "php/login.php";
//do something here..
?>
</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>