Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP fopen抛出了一个疯狂的错误-指向不同的目录_Php_Fopen - Fatal编程技术网

PHP fopen抛出了一个疯狂的错误-指向不同的目录

PHP fopen抛出了一个疯狂的错误-指向不同的目录,php,fopen,Php,Fopen,这应该很简单,但我自己却无法解决这个问题 目标:将文本文件读入字符串中,以便在中回显。我以前做过这个,但在当前的程序中,目录结构似乎让我感到不适 设置:主页位于LINUX服务器上的特定目录中,/home4/mylogin/public\u html/repository——我们称之为CWD(当前工作目录) 主页包括位于CWD/includes的functions.php文件中的文件读取函数。这是因为我想重用函数来读取四个不同的文本文件,它们都位于不同的子目录中。(这与通过FTP允许其他人编辑这些

这应该很简单,但我自己却无法解决这个问题

目标:将文本文件读入字符串中,以便在
中回显。我以前做过这个,但在当前的程序中,目录结构似乎让我感到不适

设置:主页位于LINUX服务器上的特定目录中,
/home4/mylogin/public\u html/repository
——我们称之为CWD(当前工作目录)

主页包括位于CWD/includes的functions.php文件中的文件读取函数。这是因为我想重用函数来读取四个不同的文本文件,它们都位于不同的子目录中。(这与通过FTP允许其他人编辑这些文件有关)

第一个文本文件位于
CWD/files/curator/curator.txt

当我尝试打开文本文件时,使用以下代码:

$handle = fopen($sourcepath,"r");
无论如何构建$sourcepath变量,我都会收到一个错误。以下是我为
$sourcepath
尝试的一些变体:

"/files/curator/curator.txt"
"files/curator/curator.txt" 
getcwd() . "/files/curator/curator.txt"
"http://www.websitename.com/repository/files/curator/curator.txt"
"/home4/mylogin/public_html/repository/files/curator/curator.txt"
当我打开页面时,它们都会抛出相同的错误-这一个:

fopen(/home4/dpm39110/public_html/repository/files/Curator/curator.txt):
failed to open stream: No such file or directory in /home4/mylogin
/public_html/repository/includes/functions.php on line 21
看起来
fopen()
函数正在尝试在INCLUDES目录中查找txt文件。这怎么可能?为什么它不在我指向的目录中查找

顺便说一下,使用
chdir(“/files/curator/curator.txt”)
没有帮助

恐怕我只需要将文件读取函数从
functions.php
文件移到主页代码中

然而,我很想了解为什么会发生这种情况,以及如何防止下次发生这种情况


建议?如果你能帮忙,非常感谢

使用
\uuuu DIR\uuuu
魔法常数总是一个好主意。它为您提供了执行脚本的当前方向,即脚本的编写位置。您可以使用:

// assume the script is in /home4/mylogin/public_html/includes/
$file = __DIR__ . '/../files/curator/curator.txt';
$handle = fopen($file);
//...

谢谢你的支持,我以后一定会用的

然而,问题解决了

我很难为情地承认这个解决方案是多么简单。我决定使用
file\u exists()
函数,并在文件路径中发现了一个大写问题。所以Crossphire开发项目在资金上是正确的

Grrr,还有一记耳光。脚本现在运行得很好


谢谢大家的想法和意见,我希望我能很快在这里为其他人提供一些帮助。

使用magic常量。检查文件\dir权限阅读
/
说返回根目录并开始查找Linux服务器对文件名区分大小写。在你的例子中,你有策展人,但在其他地方,你有策展人,这是不一样的。您可以尝试使用fopen(../files/curator/curator.txt)。该路径将相对于脚本路径,因此您将向上移动一个文件夹,然后返回到包含该文件的文件夹中。我很高兴能提供帮助。