带有UNC路径的PHP open_basedir

时间:2013-05-23 01:31:33

标签: php

在Windows服务器上运行PHP 5.3.1,我必须修改PHP脚本以访问网络共享上的XML文件。由于各种原因,文件无法放在PHP服务器上,我不允许在PHP服务器上创建映射驱动器,所以我必须修改PHP.ini中的open_basedir参数以包含共享的UNC路径,例如:

open_basedir = "E:\inetpub\;E:\DB_HubDataFiles\;\\stdmfps01\inter-departements$\CVSC-CDT-Estimation-Cedule\"

但是,当我尝试访问共享上的文件时,我得到“open_basedir limited in effect”错误。我试图按如下方式访问文件:

$jobfilename = "//stdmfps01/inter-departements$/CVSC-CDT-Estimation-Cedule/" .$job . ".xml";
if (file_exists($jobfilename)) {
    $jobxml = simplexml_load_file($jobfilename);
    etc...

我确信这不是权利问题,无论如何错误表明open_basedir存在问题。所以我的问题是:

  1. open_basedir是否在Windows下处理UNC路径(我见过有关此问题的相互矛盾的陈述)?
  2. 如果是这样我的语法有问题吗?
  3. 除了使用open_basedir之外还有其他选择吗?
  4. 感谢。

2 个答案:

答案 0 :(得分:1)

无论如何,这里最终为我工作的东西,即使我不完全明白为什么:

在php.ini中,将open_basedir参数更改为使用IP地址而不是服务器名称,并使用我的文件所在目录的父目录,而不是目录本身:

\\\nnn.nnn.nnn.nnn\inter-departements$\

而不是:

 \\servername\inter-departements$\CVSC-CDT-Estimation-Cedule\

在PHP脚本中也使用了IP地址:

$jobfile = "//nnn.nnn.nnn.nnn/inter-departements$/CVSC-CDT-Estimation-Cedule/" . ($jobid) . ".xml";

答案 1 :(得分:1)

这对我有用:用斜杠替换反斜杠

open_basedir = "E:\inetpub\;E:\DB_HubDataFiles\;//stdmfps01/inter-departements$/CVSC-CDT-Estimation-Cedule/"