欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP访问局域网共享文件

程序员文章站 2022-05-06 08:24:50
...
各位好!我想访问局域网内另外一台计算机上的图片文件,可是在PHP里面老是找不到。在PHP里面用filesize测试图片的大小都不行!代码是:
$filename = "http://172.16.18.123/pic/2012.png";
$size = filesize($filename);
echo $size;

报的错是:Warning: filesize() [function.filesize]: stat failed for http://172.16.12.103......
我确定两台机器是在一个网段,而且共享都设置了的。我在浏览器输入上述代码中的url地址都可以的。
请教哪位处理过这种问题的大侠!不甚感激!!


回复讨论(解决方案)

$filename = "//172.16.18.123/pic/2012.png";

$filename = "//172.16.18.123/pic/2012.png";
非常感谢您!!我试了,对的!不过我发现一个问题,如果我写成
$filename = "//172.16.18.123/news/pic/2012.png";还是找不到。news文件夹和pic文件夹都是共享出来的,只是news是pic的上一级。这是怎么回事呢?劳烦您再帮我解答下疑问不甚感激!还有,如果我把2012.png直接放到172.16.18.123的F盘根目录下,代码应该怎么写啊???多谢这位大侠!本人实在菜鸟,不好意思呀!!!

统一资源定位
//机器名或ip/共享名/路径/文件名

今天我又学了一招

统一资源定位
//机器名或ip/共享名/路径/文件名
谢谢这位大侠,不好意思再麻烦你下下~~~~请问这种情况下,如果想保证远程文件的安全性应该怎么做呢?看了手册里面说开启安全模式,PHP会检查脚本与要读取的文件的UID,这个具体是什么意思啊?UID是怎么检查的呢?有没有深入一点的资料推荐一下啊~~~~或者,php.ini里面能不能对远程文件的登录权限做一个设置啊?比如设置它的用户名和密码,这样通过验证了才能打开远程文件。谢谢您!!万分感激 !!期待您的回复哦!!!

无协议声明时,默认协议名是 file 只适用于局域网

如需安全检查,就不能用同一资源定位了。需改用 LDAP

本帖最后由 xuzuning 于 2012-12-18 11:27:22 编辑无协议声明时,默认协议名是 file 只适用于局域网

如需安全检查,就不能用同一资源定位了。需改用 LDAP
谢谢!!我就是想在局域网内简单调用另一台机器上的某个文件,但是用统一资源定位不能进行安全检查,即不能进行用户登录权限的验证。这种情况我如果把目标机器的文件夹映射到本地磁盘,这样子能不能行呢?我代码里这样写$pic="Z:\\data\news\pic\1.jpg";Z是另外那台机器上的文件夹映射到本机的盘符,这样子不行,PHP好像不认识,是不是我写错了呢?请教您了!!总之我只想简单地调用一下一个东西,但是又不想把那台机器上的文件夹完全暴露出来,就是稍微安全一点,请你帮忙解答!!万分感激啊!!!

NET USE
作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。
命令格式:net use 〔devicename | *〕 〔computernamesharename〔volume〕〕 〔password | *〕〕 〔/user:〔domainname〕username〕 〔〔/delete〕 | 〔/persistent:{yes | no}〕〕
参数介绍:
键入不带参数的net use列出网络连接。
devicename指定要连接到的资源名称或要断开的设备名称。
computernamesharename服务器及共享资源的名称。
password访问共享资源的密码。
*提示键入密码。
/user指定进行连接的另外一个用户。
domainname指定另一个域。
username指定登录的用户名。
/home将用户连接到其宿主目录。
/delete取消指定网络连接。
/persistent控制永久网络连接的使用。
简单事例:
(1)net use e: YFANGTEMP将YFANGTEMP目录建立为E盘
(2)net use e: YFANGTEMP /delete断开连接

NET USE
作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。
命令格式:net use 〔devicename | *〕 〔computernamesharename〔volume〕〕 〔password | *〕〕 〔/user:〔domainname〕username〕 〔〔/delete〕 | 〔/persistent:{yes |……
大侠,我按照你说的试了,把172.16.22.10上的F盘映射到我本机的Z盘,我在命令行是这样输的:net use z: \\172.16.22.10\f$ "password" /user:"administrator",我试了这样是可以的。但是我在PHP里用system函数执行的时候就不行,请您帮我看看,我的代码是:

$cmd="net use z: \\\\172.16.22.10\\f$ \"password\" /user:\"administrator\"";
if(system($cmd))
echo "映射成功";
else echo "映射失败";

请你帮我看看是代码的问题,还是php.ini里面需要配置什么东西才行啊, 我的安全模式是关了的。

谢谢!!!非常感谢您不耐其烦解答我一个菜鸟的弱弱问题。。。!!期待您的回复哦!!~~~

字符 \ 反过来写,就清楚多了
$cmd="net use z: //172.16.22.10/f$ password /user:administrator";
还有 password 是 administrator 的登录口令,要真实的

字符 \ 反过来写,就清楚多了
$cmd="net use z: //172.16.22.10/f$ password /user:administrator";
还有 password 是 administrator 的登录口令,要真实的
谢谢你大侠!!我按照你说的来写了,但是还是不行艾~~~麻烦你再帮我看看:
$cmd="net use z: //172.16.22.10/f$ pass123456 /user:username";
system($cmd);
您看会不会是system函数的问题啊,需要在配置文件里修改什么不呢?
我在命令行里操作是可以的,就是PHP执行不了。
再次感谢您!!~~~~~~~~~~~

请问楼主 最后这个问题解决了吗 我现在也遇到同样的问题了,查了好多资料也没解决。求帮助啊