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)。该路径将相对于脚本路径,因此您将向上移动一个文件夹,然后返回到包含该文件的文件夹中。我很高兴能提供帮助。