Отказано в разрешении на использование функции PHP move_uploaded_file

Я застрял на этом коде в течение нескольких дней, так как я сталкиваюсь с этой ошибкой, когда загружаю файл на сервер. Это сервер Windows, работающий на Apache

Пробовал различные решения, но все равно получал ошибку. Я попытался изменить полные разрешения для всех на этом сервере.

Я изменил файл tmp для загрузки PHP по умолчанию в свое приложение, но у меня все еще есть эта ошибка.

Предупреждение: move_uploaded_file(C:\My_Workspace\ojs2002) [function.move-uploaded-file]: не удалось открыть поток: разрешение отклонено в C:\My_Workspace\ojs\admin\include\fileupload.php в строке 78

Предупреждение: move_uploaded_file() [function.move-uploaded-file]: невозможно переместить «C:\My_Workspace\ojs\tmp\phpCB78.tmp» в «C:\My_Workspace\ojs2002» в C:\My_Workspace\ojs\admin \include\fileupload.php в строке 78

 // copy the file, making the destination directory if necessary
 $filedir = 'C:/My_Workspace/ojs2002/'.basename($_FILES['articlefile']['name']);


 chmod($_FILES["articlefile"]["tmp_name"], 0777);
 chmod($filedir, 0777 );        

 move_uploaded_file($_FILES["articlefile"]["tmp_name"],$filedir);

Код будет нормально работать на серверах Linux, но не на Windows.

Любая помощь будет очень высоко ценится. Спасибо.


person Steven Tang Ti Khoon    schedule 07.07.2012    source источник
comment
извините, если я неправильно понимаю, но вы изменили разрешения ojs2002 на 777?   -  person Austin    schedule 07.07.2012


Ответы (2)


Решил перейти с:

move_uploaded_file($uploaded_file, $file_path);

to

file_put_contents($file_path, file_get_contents($uploaded_file));
@unlink($uploaded_file);

unlink может выйти из строя, но я не слишком беспокоюсь об этом.

person pguardiario    schedule 26.08.2014
comment
Это точный ответ, который я получил через несколько месяцев. Я думаю, что эта проблема связана с серверными окнами. С помощью этого метода мы также можем исправить права доступа к файлам. Спасибо. - person Abijith Ajayan; 01.02.2020
comment
Собственно, что такое @unlink. какая польза от этого.?? - person Abijith Ajayan; 01.02.2020

chmod не будет работать в Windows, так как использует другой тип системы разрешений. Убедитесь, что пользователь Apache работает с полным доступом на запись к папке, в которую вы пытаетесь переместить файлы (щелкните правой кнопкой мыши и выберите общий доступ или разрешения в зависимости от версии Windows)

person Lusitanian    schedule 07.07.2012
comment
Как узнать, какой пользователь использует Apache для создания/перемещения папок в Windows?? Я использую Windows 7. Спасибо. - person Steven Tang Ti Khoon; 07.07.2012
comment
@StevenTangTiKhoon следите за эти инструкции. Это для Vista, но должно быть примерно то же самое. Просто установите Everyone на полный контроль и посмотрите, работает ли он :) - person Lusitanian; 07.07.2012
comment
Привет, я уже установил разрешения для папки «Все» imageshack.us/photo/my -images/69/772012115225am.jpg ...все еще ошибка :( - person Steven Tang Ti Khoon; 07.07.2012