Когда пользователь создает профиль и загружает изображение профиля, функция PHP «move_uploaded_file» используется для перемещения временной копии этого изображения в каталог проекта.
Хотя мой текущий код прекрасно работает на моей машине с Windows 10, он не работает на моем Mac из-за неправильных прав доступа к файлам.
Я уже попробовал метод, представленный в других ответах, и после запуска команды терминала ничего не меняется:
sudo chmod 644 /opt/lampp/htdocs/yourfolder
Это верно для любого варианта, включая:
sudo chmod -R 777 /opt/lampp/htdocs/yourfolder
Обратите внимание, что у меня действительно есть права администратора на ноутбуке
Другие пользователи заявили, что эти команды исправили их проблемы, поэтому я подозреваю, что моя команда отличается.
Фрагмент кода PHP:
$username = $_POST["username"];
$password = $_POST["password"];
$ext = null;
/* Debugging information
echo $_FILES["profile_pic"]["name"]."<br>";
echo $_FILES["profile_pic"]["tmp_name"]."<br>";
echo $_FILES["profile_pic"]["size"]."<br>";
echo $_FILES["profile_pic"]["error"]."<br>";
*/
if (strrpos($_FILES["profile_pic"]["name"], ".jpg") != null || strrpos($_FILES["profile_pic"]["name"], ".jpeg") != null) {
$ext = ".jpg";
};
if (strrpos($_FILES["profile_pic"]["name"], ".png") != null) {
$ext = ".png";
};
$path = __DIR__ . "\data\users\images\\" . uniqid() . $ext;
if (move_uploaded_file($_FILES["profile_pic"]["tmp_name"], $path)) {
echo("File successfully uploaded");
} else {
echo("Upload failed");
};
Возвращается: Загрузка не удалась
Ошибка выдана:
move_uploaded_file (/opt/lampp/htdocs/Test-Site\data\users\images\5c1dadd52bb71.jpg): не удалось открыть поток: доступ запрещен в /opt/lampp/htdocs/Test-Site/signup_confirm.php в строке 27
ожидаемый: изображение профиля пользователя вставлено в …/ HTDOCS / Тест-сайты / данные / пользователи / изображения папка
Актуально: выше выдается ошибка о неверных правах доступа к файлу
Причина ошибки в том, что я использовал неправильные разделители каталогов («\» вместо «/» для Mac). Изменение их заставило изображение профиля переместиться в предназначенное местоположение.
Других решений пока нет …