这应该很简单,但我自己也搞砸了。
目标:将文本文件读入字符串,以便在<div>
内回显。我以前做过这个,但是在当前的程序中,目录结构似乎让我适合。
设置:主页面位于LINUX服务器上的特定目录/home4/mylogin/public_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
文件移到主页面代码中。
然而,我很想知道为什么会这样,以及如何防止它下次发生。
连连呢?如果你能提供帮助,非常感谢!
答案 0 :(得分:1)
使用__DIR__
魔法常量总是一个好主意。它为您提供了执行脚本的当前指示,其中已写入。你可以使用:
// assume the script is in /home4/mylogin/public_html/includes/
$file = __DIR__ . '/../files/curator/curator.txt';
$handle = fopen($file);
//...
答案 1 :(得分:0)
感谢您的投入 - 我将来肯定会使用它。
然而,问题已得到解决!
我很尴尬地承认解决方案的基本要素。我决定使用file_exists()
函数,并在文件路径中发现了CAPITALIZATION问题。因此,Crossphire Development的资金就是正确的。
Grrr,额头一巴掌。脚本现在工作得很好。
感谢大家的意见和建议,我希望我能尽快为其他人提供帮助。