Изображения не отображаются в интернет-магазине PHP после загрузки и удаления продуктаApache

Ответить
Anonymous
 Изображения не отображаются в интернет-магазине PHP после загрузки и удаления продукта

Сообщение Anonymous »

Постановка задачи:
Я разрабатываю интернет-магазин с использованием PHP и MySQL. Моя проблема в том, что изображения, загруженные через панель администратора, неправильно отображаются на страницах интерфейса и администратора. Кроме того, при удалении продукта его файл изображения не удаляется с сервера.

Код и сведения:< /p>
  • Окружающая среда:
    • Сервер: Ubuntu
    • Веб-сервер: Apache
    • Версия PHP: Последний
    • Каталог проекта: /var/www/html/online_shop
  • Код загрузки изображения:
< pre class="lang-php Prettyprint-override">

Код: Выделить всё

if (isset($_FILES['image'])) {
$name = $_POST['name'];
$description = $_POST['description'];
$price = $_POST['price'];

$target_dir = "/var/www/html/online_shop/public/photo_product/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);

if ($_FILES["image"]["size"] > 500000) {
echo "File is too large.";
} elseif (!in_array(strtolower(pathinfo($target_file, PATHINFO_EXTENSION)), array('jpg', 'jpeg', 'png', 'gif'))) {
echo "Invalid file type.";
} elseif (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
chmod($target_file, 0644);
$image_relative_path = "public/photo_product/" . basename($_FILES["image"]["name"]);

$insert_sql = $conn->prepare("INSERT INTO products (name, description, price, image) VALUES (?, ?, ?, ?)");
$insert_sql->bind_param('ssds', $name, $description, $price, $image_relative_path);

if ($insert_sql->execute()) {
echo "Product added successfully.";
} else {
echo "Error: " . $insert_sql->error;
}

$insert_sql->close();
} else {
echo "Failed to upload file.";
}
}
  • Код удаления продукта:

Код: Выделить всё

if (isset($_POST['delete_product_id'])) {
$product_id = $_POST['delete_product_id'];

$select_sql = $conn->prepare("SELECT image FROM products WHERE id = ?");
$select_sql->bind_param('i', $product_id);
$select_sql->execute();
$select_sql->bind_result($image_path);
$select_sql->fetch();
$select_sql->close();

$delete_sql = $conn->prepare("DELETE FROM products WHERE id = ?");
$delete_sql->bind_param('i', $product_id);

if ($delete_sql->execute()) {
$full_image_path = "/var/www/html/online_shop/" . $image_path;
if (file_exists($full_image_path)) {
if (unlink($full_image_path)) {
echo "Image deleted successfully.";
} else {
echo "Error deleting image.";
}
} else {
echo "Image file not found.";
}
echo "Product deleted successfully.";
} else {
echo "Error: " . $delete_sql->error;
}

$delete_sql->close();
}
  • Код отображения внешнего изображения:

Код: Выделить всё

$sql_fetch_products = "SELECT * FROM products";
$result = $conn->query($sql_fetch_products);

while ($row = $result->fetch_assoc()) {
echo '';
echo '
[img]/online_shop/[/img]
';
echo '';
echo '' . $row['name'] . '';
echo '' . $row['description'] . '
';
echo '
Price: ' . $row['price'] .  '
';
echo '';
echo '';
}
Дополнительная информация:
  • Веб-сервер у пользователя есть права на запись в каталог загрузки.
  • В журнале ошибок PHP не отображаются ошибки, связанные с загрузкой или удалением файла.
Вопрос:
Чего мне не хватает в моем коде, что может привести к неправильному отображению изображений? и не быть удалены должным образом? Будем очень признательны за любую помощь или предложения.

результат изображения
результат изображенияЧто я пробовал:
  • Проверил пути к изображениям, хранящиеся в базе данных.
  • Убедились, что файлы изображений находятся в правильном каталоге.
  • Установите права доступа к файлам на 0644 после загрузки.
  • Проверена ошибка Apache. регистрирует любые проблемы, связанные с разрешениями.
Ожидаемое поведение:
  • Загруженные изображения должны корректно отображаться как на странице интерфейса, так и на странице администрирования.
  • Файлы изображений должны удаляться с сервера при запуске продукта. удалено.
Фактическое поведение:
  • Изображения не отображаются на странице интерфейса и на странице администрирования.
  • Файлы изображений не удаляются с сервера при удалении продукта.


Подробнее здесь: https://stackoverflow.com/questions/786 ... ng-product
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»