本地帐户无法访问PHP中的服务器路径上的文件

时间:2014-05-15 15:40:04

标签: php apache

我正在使用opendirreaddir在我们的文件共享服务器上显示可用文件的列表:

// defined in config.ini file:
error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);

define('DRAWINGS_PATH', "\\\\Files\\shared\\Engineering\\Drawings\\");

$all_files = array();
if ($handle = opendir(DRAWINGS_PATH)) {
    while (($file = readdir($handle)) !== false) {
        $lc_file = strtolower($file);
        $dwg = strchr($lc_file, '.dwg');
        $pdf = strchr($lc_file, '.pdf');
        if (($dwg == '.dwg') || ($pdf == '.pdf')) {
            //$all_files[] = new HTMLForm_SelectOption('', $file);
            // I use the line above, but it's the same as the one below.
            $all_files[] = $file;
        }
    }
    closedir($handle);
}

当我在本地PC上测试时,我会看到该文件夹​​中的所有文件。

当我将其推送到服务器时,它看不到任何内容。

这听起来像是名为Apache的本地帐户,无法访问我需要它读取的网络文件夹。

当我远程访问服务器时,运行我们的Web服务器的本地帐户似乎可以访问。

Apache screenshot

我唯一看到的是,一台PC上的用户帐户显示 Apache ,该文件夹授予的用户名为FILES\Apache,并说 Apache Web Server - 但我们的网络人员说这些是相同的帐户。

我还能检查什么?

[更新] 来自php_info():PHP Version 5.3.10

[更新2] 显示来自config.ini文件的信息

[更新3]

设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Re‌​strictNullSessAccess = 0并没有解决这个问题。

我可以使用Apache帐户在服务器上远程登录,并查看我需要访问的文件:

screenshot of Apache logged in

但是,当我尝试让Apache帐户读取这些文件以便它们显示在网页上时,我收到此错误:

  

警告:opendir(\ Files \ shared \ Engineering \ Drawings,\ Files \ shared \ Engineering \ Drawings):访问被拒绝。 (代码:5)在C:... \ FormView.php第183行警告:opendir(\ Files \ shared \ Engineering \ Drawings):无法打开目录:没有这样的文件或目录

2 个答案:

答案 0 :(得分:2)

PHP安全模式是否开启?如果是这样,如果没有先在php.ini中指定它,就无法访​​问任意路径。此外,如果你在PHP手册中说你没有收到任何错误,请确保错误显示没有被禁用 - 再次在php.ini中。

答案 1 :(得分:2)

如果您还没有解决这个问题......并且对您的网络人员充满敬意,Apache上的用户帐户DEV-WEB01(很可能)与用户帐户不同Apache Web Server的{​​{1}}。

我会按您的网络人员将用户FILESHARE01\Apache添加到Apache