1

在 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 是否在 Windows 下处理 UNC 路径(我已经看到关于此的相互冲突的陈述)?
  2. 如果是这样,我的语法有问题吗?
  3. 除了使用 open_basedir,我还有其他选择吗?

谢谢。

4

2 回答 2

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";
于 2013-06-09T15:15:01.090 回答
1

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

open_basedir = "E:\inetpub\;E:\DB_HubDataFiles\;//stdmfps01/inter-departements$/CVSC-CDT-Estimation-Cedule/"
于 2016-02-25T09:44:13.957 回答