我有一些代码为php和html的文件:
文件(server-root)/folder/folder/test.php :
<?php
$im = file_get_contents("im.txt");
?>
文件(server-root)/folder/folder/im.txt :
88-88-88
我在服务器根目录上尝试 index.php 文件:
<?php
include "folder/folder/test.php";
?>
当我包含其他的变量时会丢失,因为im.txt不在服务器根上,而是在/folder/folder/im.txt
我也在服务器根目录上尝试此文件 index.php :
<?php
echo file_get_contents("folder/folder/test.txt");
?>
但无效。
我认为在文件包含之前执行文件是一个好主意,因此在index.php上没有php,只显示im.txt的其他文件的数据
所以我必须做什么?
答案 0 :(得分:2)
您可以通过根据当前脚本文件夹指定完整路径来解决相对路径问题。
例如,在folder/folder/test.php
中,您可以执行以下操作:
<?php
echo file_get_contents(__DIR__ . "/im.txt");
?>
直接调用file_get_contents("im.txt")
时,它应该与test.php
具有相同的效果,但这次无论你从哪个相对路径调用它都会有效。
答案 1 :(得分:1)
从我能理解的情况来看,您想知道包含文件如何处理变量,例如目录是从包含文件的目录还是从父文件的目录链接。当包含文件时,该文件中的代码将被写入父文件,就像它开始时一样。例如:
父文件:
<?php
$a = 1;
include "child.php";
echo $a+$b; //will display "3"
?>
和child.php:
<?php
$b = 2;
?>
因此,如果主文件位于您网站的根目录(example.com/index.php) 而index.php有这个:
<?php
$a = 1;
include "sub-dir/child.php";
?>
和child.php有这个:
<?php
$b = 2;
include "other-child.php";
?>
other-child.php应该在根目录中,而不是在“sub-dir”中。
答案 2 :(得分:1)
您需要了解的主要事项是,当将文件包含到另一个文件中时,相对路径仅相对于主文件,而不是相对于每个包含的文件。
解决方案非常简单 - define
// /var/www/test.php
define("UPLOAD_PATH", "lib/folder/");
include "lib/test.php";
和
// /var/www/lib/test.php
$filePath = UPLOAD_PATH . 'file.txt';
file_get_contents($filePath);
这应该足以满足你的需要。
答案 3 :(得分:1)
好的,我正在添加另一个答案来帮助您进行修订。我想指出你的问题是向后解释的。您应该从主文件(index.php)开始。为了更清楚,我将以这种方式解释。
服务器根目录下的index.php文件包含:
<?php
include "folder/folder/test.php";
?>
因此,我们可以继续用“test.php”的内容替换include,然后从那里开始工作。这意味着index.php现在看起来像这样:
<?php
$im = file_get_contents("im.txt");
?>
我几乎可以肯定这就是你迷失的地方。服务器根目录下的文件正在运行上面的代码。 Witch意味着它正在寻找(server-root)/im.txt。但是您已经说过它位于(server-root)/folder/folder/im.txt。因此,将“test.php”中的那一行更改为该目录,如下所示:$im = file_get_contents("folder/folder/im.txt");
现在,index.php将引入test.php的代码,然后在相应的文件夹中查找“im.txt”,index.php将如下所示:
<?php
$im = '88-88-88';
?>
正如我所说,有很多方法可以处理相对链接以使它们更具动态性,以防您想要在不同目录中包含文件并更改它相对于它的内容。如果你愿意的话,甚至可以使它相对于“test.php”。研究php的魔术常量 DIR , FILE 和称为getcwd()
的函数,这些应该可以帮助你做更高级的事情。现在,您可以通过手动调整目录来修复它。
进一步阅读:
http://yagudaev.com/posts/resolving-php-relative-path-problem/
答案 4 :(得分:0)
为了在php脚本中内联评估/执行php脚本,你可以使用eval()函数。以下是一些更详细的解释:http://php.net/manual/en/function.eval.php