сетевой путь доступа php под windows

в PHP (XAMPP), установленном на компьютере с Windows XP, Im пытается прочитать dir, который существует на сервере локальной сети. Im, используя is_dir() чтобы проверить, является ли это dir, который я могу прочитать.

в Проводнике Windows я набираю \serverdir и этот dir показывается. Когда я сопоставляю сетевой диск, он может получить к нему доступ с помощью z:dir как хорошо.

в PHP у меня есть этот скрипт:

<?php if( is_dir($dir){ echo 'success' } ) ?>

на $dir I попробовал:

  • /server/dir
  • //server/dir
  • serverdir
  • serverdir
  • \serverdir

и

  • z:dir
  • z:dir
  • z:/dir
  • z://dir

но я никогда не добиваюсь успеха? Есть идеи? thx

3 ответов


Я решил это, изменив некоторые вещи в реестре сервера, как описано в последнем ответе этого обсуждения:

http://bugs.php.net/bug.php?id=25805

спасибо VolkerK и Гамбо в любом случае! Я люблю stackoverflow и их великих людей, которые помогают вам так невероятно быстро!!

EDIT (взято из php.net):

сервис имеет ограниченный доступ к сетевым ресурсам, таким как акции и трубы, потому что она имеет нет учетных данных и должен подключиться с помощью null сессия. Следующий раздел реестра содержит NullSessionPipes и Значения NullSessionShares, используемые для указания каналов и акции нулевых сессий может подключиться: Система реестра HKEY_LOCAL_MACHINE\\CurrentControlSet на\услуги\LanmanServer\параметры Кроме того, вы можете добавить значение REG_DWORD RestrictNullSessAccess к ключу и установите его в 0, чтобы разрешить все null сеансы для доступа ко всем каналам и общим ресурсам, созданным на этом машина.`

добавьте RestrictNullSessAccess=0 в свой реестр.


вы, вероятно, позволите xampp установить apache в качестве службы и запустить PHP-скрипты через этот apache. И служба apache (работает как localsystem) не разрешен доступ к сети, как ваша учетная запись пользователя.

служба, которая выполняется в контексте учетной записи LocalSystem, наследует контекст безопасности SCM. SID пользователя создается из значения SECURITY_LOCAL_SYSTEM_RID. учетная запись не связана ни с одним зарегистрированным пользователем счет.
Это имеет несколько последствий:
...
   * служба представляет учетные данные компьютера удаленным серверам.
...

вы можете проверить это, запустив Apache как консольное приложение (apache_start.bat в каталоге xampp должен это сделать) и снова запустить скрипт. Вы можете использовать как прямые, так и обратные косые черты в пути unc. Я бы предложил использовать / / server / share, так как php не заботится о / in string константы.

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

попробовать file: схема URI:

file://server/dir
file:///Z:/dir

начало всегда file://. Следующий сегмент пути-сервер. Если он находится на вашем локальном компьютере, оставьте его пустым (см. Второй пример). См. также файл URIs в Windows.