Intereting Posts
Исторические недостатки безопасности популярных PHP CMS? проанализировать переменные js js для php, используя AJAX Проблема с переменной областью с операторами if (PHP) Добавить новую строку в файл excel с использованием библиотеки phpExcel Учетная запись службы календаря Google с API-интерфейсом PHP oauth2.0 – Как получить доступ к календарям, которые не используются совместно каждый сеанс – это отдельный вызов сервера Связывание предохранителей для php Пользователи могут загружать видео на одном канале Youtube с аутентификацией или без нее CRUD Laravel 4 как связываться с уничтожением? Уничтожьте сеанс PHP на странице Как проверить, существует ли элемент с SimpleXML? Как я могу добавить новую строку в таблицу каждые 10 столбцов автоматически? Отображение изображений Base64 из базы данных через PHP Неизвестный модификатор в регулярном выражении PHP mysql charset utf8 проблемы

путь доступа к сети php под окнами

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

В проводнике Windows я \\\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 и их великих людей, которые помогают вам так невероятно быстро!

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

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

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

    Вы, вероятно, позволили xampp установить apache в качестве сервиса и запустить php-скрипты через этот apache. А служба apache (работающая как локальная система ) не имеет доступа к сети, как это делает ваша учетная запись пользователя.

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

    * Служба предоставляет учетные данные компьютера удаленным серверам .

    Вы можете проверить это, запустив apache в качестве консольного приложения (apache_start.bat в каталоге xampp должен это сделать) и снова запустите сценарий. Вы можете использовать как прямую, так и обратную косую черту в пути. Я бы предложил использовать // 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:// . Следующий сегмент пути – это сервер. Если он находится на вашей локальной машине, оставьте поле пустым (см. Второй пример). См. Также URI файлов в Windows .