在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存在问题。所以我的问题是:
感谢。
答案 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/"