2017-10-06 53 views
1

好日子文件夹里!我打了一堵墙。PHP /的Windows Server/IIS通过符号链接访问通过PHP文件到另一台服务器上

我试图让PHP从文件夹中加载另一台服务器上的文件,并尝试了许多方法和权限(IIS/PHP使用Windows身份验证)的变化,但还没有找到一个解决方案。我很亲密,我可以品尝它。

的文件是一个文件夹中的其他服务器上例如\\otherServer\my_photos

为了访问他们这一点,我已经创建了服务器托管的PHP网站上,例如一个符号链接

C:\my_photos > \\otherServer\my_photos 

我然后做各种测试,以确定网页是否具有访问权限,e.g:

$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完全相同,所以我怀疑原因是别的,比如某种安全限制会影响对其他服务器上的文件的访问,但我不知道。我会以虚拟感谢的方式奖励任何帮助,甚至愿意给你一张带有个人信息的照片。

UPDATE: 如果我们改用Windows身份验证关闭,匿名身份验证上(在ApplicationPoolIdentity下运行),它的工作原理,这似乎表明,A)这不是一些容易混淆的跨服务器的安全问题和b)问题可能会更多地涉及PHP/fastCGI模拟Windows用户的方式。将切换回Windows验证并继续测试!

+1

您可以打开命令提示符或者图像浏览器的形象呢?如果不是,先解决这个问题。 – Nic3500

+0

您不能在另一台服务器上安装网络服务器吗?生活是很容易的时候这里只有HTTP参与 – icc97

+0

为什么不映射\\ otherServer \ my_photos到服务器上的驱动器盘符?可能比符号链接更好。但是,您还需要对所有文件拥有正确的权限,而不仅仅是文件夹本身。它们不一定相同。除非您尝试使用某种传递身份验证,否则通常应将权限授予应用程序正在运行的帐户,而不是访问资源的用户的帐户。 – ADyson

回答

0

我设法得到这个工作(后头刮三天)通过改变FastCGI的“协议”从NamedPipeTCP,在这个答案详细介绍:

https://stackoverflow.com/a/41367358/1358231

我仍然不完全确定这是为什么会起作用,但会继续寻找。最后,不需要符号链接(或映射驱动器) - 我们可以通过UNC路径直接访问远程文件。

相关问题