我正在使用opendir和readdir在我们的文件共享服务器上显示可用文件的列表:
// 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服务器的本地帐户似乎可以访问。
我唯一看到的是,一台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\RestrictNullSessAccess = 0
并没有解决这个问题。
我可以使用Apache帐户在服务器上远程登录,并查看我需要访问的文件:
但是,当我尝试让Apache帐户读取这些文件以便它们显示在网页上时,我收到此错误:
警告:opendir(\ Files \ shared \ Engineering \ Drawings,\ Files \ shared \ Engineering \ Drawings):访问被拒绝。 (代码:5)在C:... \ FormView.php第183行警告:opendir(\ Files \ shared \ Engineering \ Drawings):无法打开目录:没有这样的文件或目录
答案 0 :(得分:2)
PHP安全模式是否开启?如果是这样,如果没有先在php.ini中指定它,就无法访问任意路径。此外,如果你在PHP手册中说你没有收到任何错误,请确保错误显示没有被禁用 - 再次在php.ini中。
答案 1 :(得分:2)
如果您还没有解决这个问题......并且对您的网络人员充满敬意,Apache
上的用户帐户DEV-WEB01
(很可能)与用户帐户不同Apache Web Server
的{{1}}。
我会按您的网络人员将用户FILESHARE01\Apache
添加到Apache
。