【问题标题】:PHP open_basedir with UNC path带有 UNC 路径的 PHP open_basedir
【发布时间】:2013-05-23 01:31:32
【问题描述】:

在 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 之外,我还有其他选择吗?

谢谢。

【问题讨论】:

    标签: php


    【解决方案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";
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多