关于链接文件,一定有一些我不明白的地方——但这是我的问题。
基本上,我有三个文件。
- generalfunctions.php
- wordcount.php
- index.php
所有三个文件都位于不同的目录中。
B 依赖 A,如下所示:../../../phpfunctions/generalfucntions.php
当我运行 B 时,一切都很好。
但是 C 依赖于 B,如下所示:../wordcount.php
当我运行 C 时,出现错误,指出无法找到链接文件 A。
实际错误是:
No such file or directory in /.../public_html/plaoul/text/statistics/wordcount.php on line 11
知道我做错了什么吗?
感谢您的帮助。
最佳答案
当您使用include
时要包含文件,并且使用相对路径作为参数,它将相对于当前工作路径。
当前路径是什么?它通常是第一个调用的 PHP 脚本的路径。整个执行开始的脚本。您可以使用函数 getcwd
获取当前工作目录。例如:<?php echo getcwd(); ?>
将向您显示当前工作路径。您可以使用chdir
更改当前工作路径功能。例如:<?php chdir( '/home/myself' ); ?>
- 使用此命令您刚刚更改了当前的工作路径!
因此,在 include 中使用相对路径并不总是好的,因为当前路径可能会改变。
但是使用__FILE__
神奇常量您可以使用某种相对路径作为包含的参数,使其相对于包含命令所在的文件。这很好!因为无论当前工作路径是什么,包含将始终相对于包含的文件!
所以...尝试以下操作:
在 B 中,您应该包含 A,如下所示:
include( dirname( __FILE__ ) . '/../../../phpfunctions/generalfunctions.php' );
在 C 中,您应该包含 B,如下所示:
include( dirname( __FILE__ ) . '/../wordcount.php' );
简而言之:使用dirname( __FILE__ )
您可以使用相对于“include”命令所在文件的路径来包含该文件。否则,该路径将相对于当前工作路径。
关于php - 按相对路径包含文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780828/