我使用文档根来提供不起作用的绝对路径。如果i为echo $_SERVER['DOCUMENT_ROOT'];
,则该路径为C:/wamp/www/
它显示错误
Warning: include_once(C:/wamp/www//library/includes/header.php) [function.include-once]: failed to open stream: No such file or directory in C:'wamp'www'Library Lending management'library'library'book_search_comit.php on line 16
当我像C:'wamp'www'Library Lending management'library'includes'header.php
一样放满时,它工作得很好。
当我使用"'"
时,我发现"/"
会产生问题,它工作得很好。我的问题是我有很多使用$_SERVER['DOCUMENT_ROOT']
的文件,它们用"/"
显示目录路径,但我需要"'"
。我怎样才能使脚本可行。
$_SERVER['DOCUMENT_ROOT']
是在服务器配置中定义的,因此您可以在那里进行更改。
在我看来,一种更健壮的方法是使用目录名(_FILE_)定义应用程序的根。这将使你的应用程序更独立于配置,更"即插即用",这似乎适合图书馆收藏。
我还鼓励您使用常量DIRECTORY_SEPARATOR,而不是在内部路径中对"'"
或"/"
进行硬编码,因为这更易于跨平台移植。
使用str_replace()更改路径分隔符:
$docroot = str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['DOCUMENT_ROOT']);
include_once($docroot.'header.php'); // etc.
您可能需要另一个DIRECTORY_SEPARATOR,这取决于$docroot的最终用途。
我使用dirname(dirname(__FILE__))
,它对我有效。dirname(__FILE__)
给出文件的当前位置,dirname(dirname(__FILE__))
给出后退一步的目录。