使用 php 在网络上使用 ip 或计算机名读取文件

Posted

技术标签:

【中文标题】使用 php 在网络上使用 ip 或计算机名读取文件【英文标题】:use php read file on network with ip or computername 【发布时间】:2012-05-06 19:58:41 【问题描述】:

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

$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 的内容。 你能帮助我吗?每个想法都对我有帮助,我非常感谢。

【问题讨论】:

我认为您无法检查其他电脑上的文件是否存在 什么版本的windows? 这里的技术术语是您正在尝试访问 SMB 共享​​>。我没有使用 PHP 的经验。如果你在浏览器(IE?)中输入它,那么操作系统(Windows)会处理它,这显然是可行的。 【参考方案1】:

这是您在本地执行此操作的方法(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:驱动器的日子。

【讨论】:

***.com/questions/2874796/… 这对我有帮助... @RaheelHasan 你可能也会觉得这个答案很有趣***.com/questions/14367687/… 嗯,谢谢...我确实已经弄清楚了...我的问题与 nullSession 有关,并通过在 Windows Service for Apache 上添加登录用户来解决.. 如果您需要输入用户名和密码,您将如何使用 PHP 访问文件?【参考方案2】:

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

file_get_contents 仅支持following protocols.

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

FreeCode download site for smbwebclient Tutorial post about smbwebclient

【讨论】:

以上是关于使用 php 在网络上使用 ip 或计算机名读取文件的主要内容,如果未能解决你的问题,请参考以下文章

需要在 Ubuntu 上使用 PHP 查找网络接口的 IP 地址

计算机相关名词解释

计算机相关名词解释

网络协议之mDNS

怎样查看哪个ip在ping你的计算机?

001.DNS原理及配置格式