5

当我通过 ip 或计算机名在 LAN 网络上使用 php 读取文件时。

$url = "\\\\192.168.0.200\\testshare\\1.txt";
        if(file_exists($url) == TRUE) {
            echo "OK";
        } else {
            echo "Error";
        }

结果:总是“错误”。如果我使用函数 file_get_contents ($url , true); 结果:

Warning: file_get_contents(\\192.168.0.200\testshare\1.txt) [function.file-get-contents]: failed to open stream: Permission denied in D:\services\htdocs\test.php on line 3

当然,文件夹“testshare”是设置共享和权限所有人完全控制的。如果我用磁带浏览器:\192.168.0.200\testshare\1.txt 它读取文件 1.txt 的内容。你能帮助我吗?每个想法都对我有帮助,我非常感谢。

4

2 回答 2

3

这是您在本地执行此操作(Win 7)的方法,如果它是远程服务器,您可能必须跳过一些防火墙障碍

在您的桌面上创建一个空白文件夹并将文件放入其中,然后右键单击它并单击与...共享,然后单击特定人员,然后在下拉选项框中选择所有人。

您将获得一个看起来像的地址testshare (file://YOUR-PC-NAME/Users/YourAcount/Desktop/testshare)

然后像这样使用该地址:

<?php
$url = "//YOUR-PC-NAME/Users/YourAcount/Desktop/testshare/1.txt";
if(file_exists($url) == TRUE) {
    echo "OK"; 
} else {
    echo "Error";
}
?>

对于远程服务器,请记住在您的软件防火墙中允许端口 137,445,这也是一个安全风险,所以不要让外部 WAN 流量访问。我记得XP默认共享C:驱动器的日子。

于 2012-04-26T05:18:11.690 回答
0

听起来您正试图通过 PHP 访问网络共享(smb) 。

file_get_contents仅支持以下协议。

SMB 不是受支持的协议,但是有一些可用的实现。在我的搜索中不断出现的是 smbwebclient(未经测试):

于 2012-04-26T06:30:26.467 回答