Scandir()与getParameter Symfony 2

时间:2017-02-14 15:29:17

标签: symfony config scandir

我正在使用Wampserver2.2,Symfony 2.5和Php 5.3.13,我创建了一个文件浏览器。

要扫描我的目录,我实际在我的DefaultController中的showAction()中执行:

它很棒!

$dir = \\\\servername\Dossiers Projet\Path\to\Directory
$clients = scandir($dir);

我想在 config.yml

中参数路径目录
parameters:
    chemin_clients: \\\\servername\Dossier Projets\Path\to\Directory

我也测试过:

parameters:
    chemin_clients: '\\\\servername\Dossier Projets\Path\to\Directory'

新的showAction():

$dir = $this->container->getParameter('chemin_clients');
$clients = scandir($dir);
var_dump($clients);

var_dump($dir);返回string '\\\\servername\Dossier Projets\Path\to\Directory'

var_dump($clients);返回布尔值FALSE

警告:scandir(\\ servername \ Dossiers Projet \ Path \ to \ Directory)[function.scandir]:无法打开目录:

中没有此类文件或目录

我不知道问题是什么.. 非常感谢!

1 个答案:

答案 0 :(得分:0)

scandir()(以及opendir())函数在失败时返回FALSE - 如果directory不是目录资源,则返回boolean FALSE。 问题是由于Windows上的Apache服务对网络资源(例如共享和管道)的访问权限有限,因为它没有凭据并且必须使用空会话进行连接 - 因此\\\\servername\Dossier Projets\Path\to\Directory路径不是由Apache服务处理的PHP的有效目录资源。

您可以设置NullSessionPipesNullSessionShares值,这些值用于指定空会话可以在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters注册表项中连接的管道和共享,或者您可以添加REG_DWORD值RestrictNullSessAccess=0到该键,允许所有空会话访问在该机器上创建的所有管道和共享(当然,考虑风险)。