文件存在,但 PHP 抛出“无法打开流:没有这样的文件或目录”


File exists but PHP throwing "failed to open stream: no such file or directory"

我正在尝试从服务器上的.txt文件中提取随机字符串,以便将其显示在我网站的页脚中。这是我使用的代码(前两行纯粹用于调试目的):

<div id="footer">
    <div class="instructions">
        <?php
            $file = include_once 'facts.txt';
            echo dirname(__FILE__);
            $f_contents = file('facts.txt');
            $line = $f_contents[array_rand ($f_contents)];
            echo $line;
        ?>
    </div>
</div>

这是我的页脚中显示的内容:

TEST LINE - FOR TESTING PURPOSES.
/HOME/LEWIHTYV/PUBLIC_HTML/WP-CONTENT/THEMES/LEWNACY
WARNING: FILE(FACTS.TXT) [FUNCTION.FILE]: FAILED TO OPEN STREAM: NO SUCH FILE OR DIRECTORY IN /HOME/LEWIHTYV/PUBLIC_HTML/WP-CONTENT/THEMES/LEWNACY/FOOTER.PHP ON LINE 6
WARNING: ARRAY_RAND() EXPECTS PARAMETER 1 TO BE ARRAY, BOOLEAN GIVEN IN /HOME/LEWIHTYV/PUBLIC_HTML/WP-CONTENT/THEMES/LEWNACY/FOOTER.PHP ON LINE 7

出于某种原因,即使文件在包含时被识别并且目录正确(页脚.php和事实.txt文件都在同一个目录中),随机行选择也会引发此错误。我已经使用 WAMP 在本地测试了此代码,没有任何问题。我还检查了文件权限以确保它是可读的。

答案是 PHP 不会自动假设"facts.txt"与正在运行的 PHP 文件位于同一目录中。你必须告诉它完整的路径。

尝试:

$f_contents = file(dirname(__FILE__) . '/facts.txt');