TroL929
@TroL929
веб-программист

Как победить ошибку «failed to open stream»?

Перенес сайт на новый сервер и после этого отвалилась загрузка файлов. Код в общем стандартный и прежде прекрасно работал (Добавлять пока сюда его не буду)

Выдает "Warning: imagepng(images/upload/1090d639d14df68959c5a1ccb0e47556/logo.png): failed to open stream: Permission denied in /var/www/...."
Пути к файлам проверил. Даже права выставил на 777, но это не помогло. Есть предположение что временный файл пишется не корректно, но как проверить не знаю. Только var_dump($_FILES["logo"]); но выдает он правильную информацию - и название и вес файла.

Прошу советы что можно еще проверить и какими способами можно проверить источники проблем?
  • Вопрос задан
  • 10180 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Есть подозрение, что imagepng() пытается писать в такое место, где у него нет прав.
Попробуйте вместо images/upload... указать абсолютный путь. Проверьте еще раз, есть ли права. И не только на корневую папку images, но и на вложенные.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
LenovoId
@LenovoId
svg, css,js
Permission denied in /var/www/.... это права доступа !
если у вас на локальной машине это и как правило linux hosts то откройте права для чтения и записи
Ответ написан
Комментировать
Spage
@Spage
Web разработка, администрирование Ubuntu
Перечень мер, если появилась ошибка «Не удалось открыть поток: отказано в доступе».
1. Узнайте код ошибки php. Для этого поместите этот код в начало файла php.
ini_set('error_reporting', E_ALL);ini_set('display_errors', 1);ini_set('display_startup_errors', 1);
2. К папке должен быть доступ 777. Проверьте это.
3. Тег должен иметь атрибут enctype = "multipart/form-data" method = "post".
<form enctype="multipart/form-data" method="post">
4. Откройте и посмотрите массив $ _FILES на сервере.
print_r ($_FILES);
5. Откройте и посмотрите массив $ _FILES на клиенте.
file = document.getElementById("get_avatar").files[0];parts = file.name.split('.');
var a = file.size;var b = parts.pop();var c = file.type;alert(a+b+c);
6. Проверьте права пользователя и группы пользователей на каталог.
cd /var/www/your_site/user
ls -l
Подробнее на profi.spage.me/php/check-file-input-on-php-and-jqu...
В вашем случае, проверьте права на директорию images/upload/1090d639d14df68959c5a1ccb0e47556, права должны быть 777 и проверьте права пользователя и группы пользователей на этот каталог.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы