Scandir() с getParameter Symfony 2

Я использую Wampserver2.2, Symfony 2.5 и Php 5.3.13, и я создаю файловый менеджер.

Для сканирования моего каталога я на самом деле делаю это в моей showAction() в моем DefaultController:

И это прекрасно работает!

$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); вернуть логическое значение ЛОЖЬ

Предупреждение: scandir(\\ имя_сервера \Dossiers Projet\Path\to\Directory) [function.scandir]: не удалось открыть каталог: нет такого файла или каталога в

Я не знаю, в чем проблема.. Большое спасибо!

1 ответ

Решение

scandir() (а также opendir() а также) функция возвращает FALSE при ошибке - если каталог не является ресурсом каталога, то возвращается логическое FALSE. Проблема вызвана тем фактом, что служба Apache в Windows имеет ограниченный доступ к сетевым ресурсам, таким как общие ресурсы и каналы, потому что она не имеет учетных данных и должна подключаться с использованием нулевого сеанса - поэтому \\\\servername\Dossier Projets\Path\to\Directory путь не является допустимым ресурсом каталога для PHP, обрабатываемого службой Apache.

Вы можете установить NullSessionPipes а также NullSessionShares значения, которые используются для указания каналов и общих ресурсов, к которым нулевые сеансы могут подключаться в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters ключ реестра, или вы можете добавить значение REG_DWORD RestrictNullSessAccess=0 к этому ключу, чтобы разрешить всем пустым сеансам доступ ко всем каналам и общим ресурсам, созданным на этом компьютере (но, конечно, учитывайте риски).

Другие вопросы по тегам