首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php中的文件路径是如何工作的?

php中的文件路径是如何工作的?
EN

Stack Overflow用户
提问于 2009-11-11 05:21:22
回答 5查看 3.1K关注 0票数 2

问题是,我在与body.html位于同一文件夹的类中使用了file _ get _ contents("body.html")方法。问题是我收到一个错误,说找不到该文件。这是因为来自另一个类的我需要使用方法file _ get _ contents("body.html")的文件,而突然我不得不使用"../body/body.html“作为文件路径。

这不是有点奇怪吗?调用方法file _ get _ contents("body.html")的类与body.html在同一个文件夹中,但是因为这个类需要来自其他地方的另一个类,所以我需要一个新的文件路径?!

下面是目录和文件的简短列表:

lib/main/main.php

lib/body/body.php

lib/body/body.html

这是body.php:

代码语言:javascript
运行
复制
class Body {

 public function getOutput(){
  return file_get_contents("body.html");
 }
}

这是main.php:

代码语言:javascript
运行
复制
require '../body/body.php';

class Main {

 private $title;
 private $body;

 function __construct() {

  $this->body = new Body();
 }

 public function setTitle($title) {
  $this->title = $title;
 }

 public function getOutput(){
  //prints html with the body and other stuff.. 
 }
}

$class = new Main();
$class->setTitle("Tittel");
echo $class->getOutput();

我所要求的是修复错误,即body.phpbody.html在同一文件夹中,但是当另一个类需要来自file _ get _ contents("body.html")方法中其他位置的body.php时,我必须更改路径

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-11 05:30:16

PHP基于文件的函数的作用域始终从执行堆栈中的第一个文件开始。

如果index.php是请求的,并且包含classes/Foo.php,而body又需要包含'body/body.php',则文件范围将是index.php的范围。

本质上,就是current working directory

不过,您还是有一些选择的。如果要包含/打开与当前文件位于同一目录中的文件,可以执行以下操作

代码语言:javascript
运行
复制
file_get_contents( dirname( __FILE__ ) . '/body.html' );

或者,您可以在常量中定义基目录,并将其用于包含内容

代码语言:javascript
运行
复制
define( 'APP_ROOT', '/path/to/app/root/' );
file_get_contents( APP_ROOT . 'lib/body/body.html' );
票数 8
EN

Stack Overflow用户

发布于 2009-11-11 05:43:30

作为对用dirname(FILE):回答的人的补充

PHP5.3增加了一个目录魔术常量。所以在PHP5.3中

代码语言:javascript
运行
复制
file_get_contents(__DIR__."/body.html");

应该能帮你解决这个问题。

票数 3
EN

Stack Overflow用户

发布于 2009-11-11 05:25:39

不,这并不奇怪。

PHP与工作目录一起运行。这通常是"entry“脚本所在的目录。执行包含的脚本时,此工作目录不会更改。

如果您想要读取当前执行文件目录中的内容,请尝试类似这样的操作

代码语言:javascript
运行
复制
$path = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR."body.php";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1711281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档