作者anawak (...)
看板PHP
标题Re: [请益] fopen无法开启网路磁碟档案
时间Thu Aug 1 12:59:17 2013
※ 引述《anawak (...)》之铭言:
: 已爬文,不过没看到我需要的解答。
: 一共有 3 台电脑:
: 正式伺服器 (Win8,xampp)
: http://192.168.1.1/test.php
: 测试伺服器(Win7, xampp, 我自己的电脑)
: http://mysite.local/test.php
: 网路上的芳邻(XP)
: \\UserPC\Shared\a.txt
: 在伺服器上都有挂载成 Z:\
: 资料夹的权限:
: 安全性:所有人都可读写(everyone)
: 共用:所有人都可读写(everyone)
: 程式码:
: <?php
: $fh = fopen('Z:\a.txt', 'r');
: ?>
: 我用自己的测试伺服器(Win7),可以读到 UserPC的 a.txt
: 在正式伺服器(Win8)却不行。
: 错误讯息:failed to open stream: Permission denied
: 大家都在同一个内网,怎麽会正式伺服器可以连,
: 测试伺服器却不能连?怎麽会这样?
: 我目前只想到,会不会是 Win8 跟人家比较不一样?
: Win8不能随便存取别人的档案?
: 通常都是保护自己的档案不让别人存,应该不会禁止自己去存取别人的档案吧?
终於找到问题了,更~
我的电脑的 xampp ,是用程式方式执行,无此问题。
但正式伺服器的 xampp ,是用服务方式执行。
而预设帐号(可能是system)禁止做这件事。
所以去服务里面,把 apache 那支叫出来,
改设为 administrator 帐号,并设定密码,
这样就可以成功把档案写到网路上的芳邻。
而且不挂载成自己的网路磁碟也可以。
那 fopen 就要写成 fopen('\\\\UserPC\Shared\a.txt');
因为 \ 代表跳脱,所以 2 个斜线代表 1 个斜线。
那後面为什麽只要 1 个斜线?因为这里的 \S 没有意义,
所以斜线就是斜线。(但如果是正规表示法就不一样了)
当然也可以写成 fopen('\\\\UserPC\\Shared\\a.txt');
意思一样。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: anawak 来自: 114.45.88.249 (08/16 00:58)