php - 按相对路径包含文件

标签 php path include

关于链接文件,一定有一些我不明白的地方——但这是我的问题。

基本上,我有三个文件。

  1. generalfunctions.php
  2. wordcount.php
  3. 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/

相关文章:

path - 什么是连接任意数量的组件以在 Rust 中构建路径的宏?

java - 如何使用 JFileChooser 添加双反斜杠而不是单个反斜杠

php - 在 HTML 中包含选项

c++ - 如何使编译器仅搜索包含目录中的特定文件并排除该特定目录中的其余文件

php SetCookie 适用于 Firefox,但不适用于 IE

php - 改进/优化 PHP、MySQL、Zend 中的查询性能

php - 选择具有特定 MySql 请求 PHP 的所有用户

php - 更新时在数据库中保留值

python - 加入: string and absolute path with os.路径

c - 在两个头文件中包含一个 typedef