PHP open_basedir with UNC path


PHP open_basedir with UNC path

在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限制生效"错误。我正在尝试访问以下文件:

$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处理UNC路径下的Windows(我已经看到关于这个矛盾的声明)?
  2. 如果是这样,我的语法有问题吗?
  3. 我有其他的选择,而不是使用open_basedir?

谢谢。

无论如何,这是我最终的工作,即使我不完全清楚为什么:

在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";

这对我来说很有效:用斜杠代替反斜杠

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