сетевой путь доступа 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.