有一个奇怪的问题,到目前为止让我摸不着头脑。
我有一个索引页面,其中包含一个common.php require文件。在require文件中有六个脚本,其中除了两个脚本之外的所有脚本都与common.php位于同一个文件夹中。
因此,对于同一文件夹中的脚本,我只使用文件名eg-require('filename.php'),它可以正常工作。其余两个脚本位于名为config的相邻文件夹中,因此我尝试使用require('../ config / file.php'),但它不起作用。
奇怪的是,如果我使用索引文件中的相对路径吗?
如果文件在同一个文件夹中但在不同的文件夹中,我怎么能使用相对于common.php的路径呢?
我确信现在有一个合理的解释让我无法理解,所以任何帮助都会受到高度赞赏。
感谢 Ĵ
答案 0 :(得分:1)
首先设置这样的路径
set_include_path(get_include_path() . PATH_SEPARATOR . realpath("./")); //change accordingly the path e.g. path to common.php
然后使用脚本中所需的文件。
答案 1 :(得分:1)
据我了解,您将文件包含在包含的文件中。据我所知,“../”的翻译取决于当前的工作目录,而不是包含文件所在的目录 - 但我不确定。无论如何,您可以使用以下内容解决包含文件中的问题:
假设:
index.php
文件位于C:/inetpub/wwwroot/project1
inc01.php
文件位于C:/inetpub/wwwroot/project1/include/
cfg01.php
文件位于C:/inetpub/wwwroot/project1/config/
index.php包含:
require( "include/inc01.php" );
在inc01.php中包含cfg01.php,无论容器脚本是否为/index.php,/admin/index.php,/products/laptops/index.php:
require( dirname( dirname( __FILE__ ) ) . "/config/cfg01.php" );
第一个dirname返回inc01.php所在的目录名。第二个返回其父目录。您可以使用常量DIRECTORY_SEPARATOR
而不是担心是使用正斜杠还是反斜杠。您可以将dirname级联三次以获得../../
,依此类推。
答案 2 :(得分:0)
是包含common-path的common.php部分的文件夹吗?即,如果在索引页面中你只需要('common.php')而不是common.php的相对路径它是否仍然需要它?