Вопрос

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

В Windows Explorer I введите \\\server\dir И этот директор показан. Когда я сопоставляю сетевой диск, может получить доступ к нему с z:\dir также.

В PHP у меня есть этот сценарий:

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

За $dir Я старался:

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

а также

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

Но я никогда не получаю успеха? Есть идеи? спасибо

Это было полезно?

Решение

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

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

В любом случае спасибо Volkerk и Gumbo! Я люблю Stackoverflow и их замечательные люди, которые помогают вам так невероятно быстро !!

Изменить (взято с php.net):

Услуга имеет ограниченный доступ к сетевым ресурсам, таким как акции и трубы, потому что у нее нет учетных данных и должны подключаться к нулевым сеансу. Следующий ключ реестра содержит значения NullSessionPipes и NullSessionShares, которые используются для указания труб и акций, с которыми могут соединяться Null Sessions: hkey_local_machine System CurrentControlset Services Lanmanerver Параметры Альтернативно, вы можете добавить значение reg_dford ratperctessAccessaccesse к сводке к сводке, вы можете добавить значение. и установите его на 0, чтобы позволить всем нулевым сеансам получить доступ ко всем трубам и акциям, созданным на этой машине.

Добавьте RESTRCTNULLSESSACCESS = 0 в ваш регистр.

Другие советы

Вы, вероятно, позволили XAMPP установить Apache в качестве службы и запустить сценарии PHP в этом Apache. И служба Apache (работая как Местный) не разрешено получить доступ к сети, как ваша учетная запись пользователя.

Служба, которая работает в контексте учетной записи Localsystem, наследует контекст безопасности SCM. Пользователь SID создается из значения Security_local_system_rid. Учетная запись не связана с какой-либо регистрацией учетной записи пользователя.
Это имеет несколько последствий:
...
   * Служба представляет учетные данные компьютера удаленным серверам.
...

Вы можете проверить это, запустив Apache Application Application (APACHE_START.BAT в каталоге XAMPP должен сделать это) и снова запустить скрипт. Вы можете использовать как вперед, так и назад на пути UNC. Я бы посоветовал использовать // Server /Share, так как PHP не заботится о /в строковых литералах.

<?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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top