【问题标题】:file_get_contents doesn't work if there is a dot(.) in the folder in Windows platform如果 Windows 平台的文件夹中有点 (.),则 file_get_contents 不起作用
【发布时间】:2025-11-29 13:35:01
【问题描述】:

我使用的是 Windows 平台。 如果我将 myFile.pdf 放在 abc@xyz.com 中,则下面的代码不起作用-

file_get_contents('C:\Apache24\htdocs\portal\abc@xyz.com\myFile.pdf')

如果我将 myFile.pdf 放在 abc@xyzcom 中,那么下面的代码可以工作-

file_get_contents('C:\Apache24\htdocs\portal\abc@xyzcom\myFile.pdf')

所以结论是——如果文件夹名称中有一个点(.),那么file_get_contents 就不能按预期工作。

知道如何在 Windows 平台中转义文件夹名称中的 (.) 吗?

【问题讨论】:

  • 你在windows平台上有/var/www/...?好吧,可能.....
  • 我无法使用 php 5.6.14/win10 重现错误。
  • @VolkerK 我对 /var/www 感到抱歉,我只是举了一个关于该路径的示例。我现在将编辑它。我正在使用 PHP 5.5 Windows Server 2012

标签: php windows directory file-get-contents filepath


【解决方案1】:

还没有回答(还):
请尝试

<?php
$path = 'C:\\Apache24\\htdocs\\portal\\abc@xyz.com\\myFile.pdf';
checkPath($path);

function checkPath($path) {
    $d = dirname($path);
    if ( '/'===$d || '\\'===$d || $path===$d ) {
        return;
    }
    else {
        checkPath($d);
        echo 
            file_exists($path) ? '+':'-',
            is_dir($path) ? 'd' : ' ',
            is_readable($path) ? 'r' : ' ',
            ' | ', $path, 
        "<br />\r\n";
    }
}

add 输出到您的问题文本。

【讨论】:

  • 感谢您的帖子。对于这个路径 = C:\Apache24\htdocs\portal\abc@xyz.com\myFile.pdf 我得到的结果是- 和你提到的代码。我不明白为什么它显示文件没有t 存在。该文件有读取权限。
  • 但是对于路径C:\Apache24\htdocs\portal\abc@xyz.com 它显示+dr | ?还是从哪里开始只显示- |
最近更新 更多