美好的一天!我撞墙了。
我正在尝试让PHP从另一台服务器上的文件夹加载文件并尝试了很多方法和权限变体(IIS / PHP使用Windows身份验证)但尚未找到解决方案。我很亲密,我可以品尝它。
文件位于另一台服务器上的文件夹中,例如\\otherServer\my_photos
为了访问它们,我在托管PHP站点的服务器上创建了一个符号链接,例如
C:\my_photos > \\otherServer\my_photos
然后,我正在进行各种测试以确定页面是否具有访问权限,例如:
$path = 'C:\\my_photos';
$isReadable = is_readable($path);
var_dump($isReadable);
上述内容会返回TRUE
。
但是,如果我这样做:
$path = 'C:\\my_photos\photo_1.jpg';
$isReadable = is_readable($path);
var_dump($isReadable);
返回FALSE
。
文件photo_1.jpg
上的权限与文件夹my_photos
相同,所以我怀疑原因是其他原因,例如某些安全限制会影响对其他服务器上文件的访问,但我是出于想法。我会以虚拟的感激回报任何帮助,甚至愿意用个人信息给你画一张照片。
更新 如果我们关闭Windows身份验证和匿名身份验证(在ApplicationPoolIdentity下运行)它可以工作,这似乎表明a)它不是一些令人困惑的跨服务器安全问题和b)问题可能更多地与PHP / fastCGI模仿的方式有关Windows用户。将切换回Windows身份验证并继续测试!
答案 0 :(得分:0)
您忘记了转义目录名称前面的斜杠。它应该看起来像这样。
$path = 'C:\\my_photos\\photo_1.jpg';
$isReadable = is_readable($path);
var_dump($isReadable);
每个斜杠都被转义,因此\ otherServer \ my_photos将变为:
$path = '\\\\otherServer\\my_photos';
请注意,服务器名称前用四个斜杠,目录名称前用两个斜杠。