Загрузить файл на сетевой диск в php

PHP скрипт для загрузки файла на подключенный сетевой диск не работает. Ниже приведен скрипт php:

$newfilename = "something.wav";
$path  = 'Y:\\uploaded\\'.$newfilename;
copy($_FILES['ufile']['tmp_name'], $path);

Я также проверил разрешение для папки сетевого диска. У меня есть диск Y, связанный с сетевым диском (10.4.4.32) d диск в загруженной папке. У него есть полное разрешение на управление. Я пробовал следующий путь для сетевого диска:

  • Y: \ закачано \
  • \\ 10.4.4.32 \ d $ \ закачано \
  • move_uploaded_file ($ _ FILES ['ufile'] ['tmp_name'], $ path);

Но он работает на локальном диске, как:

  • d: \ uploaded \ Файл загружен на локальный диск, но не может быть загружен на сетевой диск. Я использовал php 5.3 и IIS 7 для применения

Отображаемые ошибки: Предупреждение: копия (\10.4.4.32\d$\uploaded\test.wav): не удалось открыть поток: в C:\inetpub\wwwroot\myapp\upload.php в строке 107 отказано разрешение

У меня есть разрешение полного контроля в свойствах загруженной папки для КАЖДОГО пользователя. Есть ли другое разрешение, я должен исправить.

2 ответа

Во-первых, проверьте, если copy() возвращает ложь Это указывает на то, что действительно есть ошибка.

Затем включите track_errors директива в вашем php.ini, а также display_errors а также error_reporting до самого высокого уровня. когда track_errors активирован (и вы перезапустили свой веб-сервер), используйте следующую строку после копирования:

var_dump($php_errormsg, error_get_last());

Это должно дать вам лучший совет о проблеме.


Также убедитесь, что если вы используете safe_mode а также open_basedirпуть, по которому вы двигаетесь, разрешен.

Сетевой диск может не работать ни для apache, ни для php, поэтому используйте этот $path = "\\machine-name\share_path\";

настроить учетную запись пользователя на ОБЕ компьютере, например, пользователь: ApacheUser

зайдите в службы и нажмите Apache, и используйте только что созданную учетную запись для входа (вторая вкладка) службы Apache исходного компьютера

перезапустите сервис apache

тогда это должно работать сейчас

Другие вопросы по тегам