Я пишу блог-подобный веб-сайт с такими функциями, как публикация и корректное отображение сообщений. В настоящее время я пытаюсь добавить опцию для включения изображения в сообщения, загружая его в папку в папке моего проекта с помощью функции PHP move_uploaded_file
.
Я предоставил пользователю Apache _www, права на чтение, запись и выполнение с помощью chmod
. Я также гарантировал, что у него есть разрешения на запись, чтение и выполнение в родительских каталогах, ведущих к самой папке загрузки.
Я даже пытался передать полное владение папкой проекта указанному пользователю, используя chown
. Тем не менее, я получаю предупреждение PHP, которое говорит:
Предупреждение PHP: файл move_uploaded_file (/ Users / MyUser / Desktop / Project / assets / php /../ uploads / 2.jpg): не удалось открыть поток: отказано в доступе в / Users / MyUser / Desktop / Project / assets / PHP / upload.php
PHP
$target_dir = __DIR__ . "/../uploads/";
var_dump($target_dir);
$file = basename($_FILES["file"]["name"]);
$target_file = $target_dir . $file;
$allowed_extensions = array("jpeg", "jpg", "png");
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
if(isset($_POST["upload"])) {
echo $target_file;
$stmt = $pdo->prepare("INSERT INTO images (imgTitle, imgLocation) VALUES (:imgTitle, :imgLocation)");
$stmt->execute(array(
":imgTitle" => basename($_FILES["file"]["name"]),
":imgLocation" => $target_file
));
if ($imageFileType = in_array($imageFileType, $allowed_extensions)) {
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
}
}
HTML
<form action="" method="post" enctype="multipart/form-data">
Select Image File to Upload:
<p><input type="file" name="file"></p>
<input type="submit" name="upload" value="Upload">
</form>
Почему это происходит и как я могу решить эту проблему, не меняя пользователя _www
на моего пользователя?