Отказано в доступе в / opt / lampp / htdocs / при записи файла в PHP - PullRequest
0 голосов
/ 22 декабря 2018

Когда пользователь создает профиль и загружает изображение профиля, функция 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): не удалось открыть поток:В доступе отказано в разрешенииt / lampp / htdocs / Test-Site / signup_confirm.php в строке 27

Ожидается : изображение профиля пользователя вставляется в ... / htdocs / Test-Site / data / users / images папка

Факт: выше ошибка о неверных разрешениях файла выдается

1 Ответ

0 голосов
/ 22 декабря 2018

Причина ошибки заключается в том, что я использовал неправильные разделители каталогов ("\" вместо "/" для Mac).Их изменение заставило изображение профиля переместиться в нужное место.

...