Загрузить файл на сетевой диск в 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
тогда это должно работать сейчас