PHP Access Network Path под Windows
-
18-09-2019 - |
Вопрос
В 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.