Я новичок в laravel. Я пытался открыть http://localhost/test/public/
и я получил
Ошибка в обработчике исключений.
Я googled вокруг и изменил разрешение каталога хранения с использованием chmod -R 777 app/storage
но безрезультатно.
Я изменил debug=>true
в app.php
и посетил страницу и получил ошибку в обработчике исключений:
Не удалось открыть поток или файл «/var/www/html/test/app/storage/logs/laravel.log»: не удалось открыть поток: разрешение отклонено в / var / www / html / test / bootstrap / скомпилировано. PHP: 8423
- Как установить значение по умолчанию для столбца временной метки в текущую временную метку с миграциями Laravel?
- Laravel 5.1 Неизвестное имя типа базы данных
- Laravel 4 Отношения между мужчинами и женщинами
- Передача массива в Redirect :: action в laravel
- Как сделать контроллеры, модели, просматривать внешнюю папку приложения в Lavarel 4?
Затем я изменил права доступа к каталогу хранилища, используя команду chmod -R 644 app/storage
и ошибка «Ошибка в обработчике исключений» исчезла, и страница загрузилась. Но там я получаю это:
file_put_contents (/var/www/html/laravel/app/storage/meta/services.json): не удалось открыть поток: разрешение отклонено
Предложение от vsmoraes работало для меня:
Laravel> = 5.4
php artisan cache:clear chmod -R 777 storage/ composer dump-autoload
Ларавель <5.4
php artisan cache:clear chmod -R 777 app/storage composer dump-autoload
Для гуглеров, столкнувшихся с этой проблемой с Laravel 5.
Это проблема разрешения, вызванная тем, что разные пользователи пытаются писать в том же файле журнала в папке storage/logs
с разными разрешениями.
Случается, что ваша конфигурация laravel, вероятно, настроена ежедневно регистрировать ошибки, поэтому ваш веб-сервер (apache / nginx) может создать этот файл под пользователем по умолчанию, в зависимости от вашей среды он может быть чем-то вроде _www
на OSX или www-data
на * системах NIX , тогда проблема возникает, когда вы, возможно, запускаете некоторые команды ремесленника и получаете некоторые ошибки, поэтому ремесленник будет писать этот файл, но с другим пользователем, потому что PHP на терминале выполняется другим пользователем, фактически вашим пользователем входа, вы можете проверить его выполнив эту команду:
php -i | grep USER
Если ваш пользователь входа в систему создал этот файл журнала вашего веб-сервера, вы не сможете писать ошибки в нем, и наоборот, поскольку laravel записывает файлы журналов с 655
правами по умолчанию, которые разрешают владельцу писать в нем.
Чтобы исправить это временное действие, вы должны вручную предоставить разрешения для группы 664
в этот файл, чтобы и ваш пользователь входа в систему, и пользователь веб-сервера могли записывать в этот файл журнала.
Чтобы избежать этой проблемы навсегда, вы можете настроить правильные разрешения при создании нового файла в каталоге storage/logs
, наследуя разрешения из каталога, этот ответ https://unix.stackexchange.com/a/115632 может помочь вам чтобы справиться с этим.
Для всех, кто использует Laravel 5, Homestead и Mac, попробуйте следующее:
mkdir storage/framework/views
несколько раз SELINUX вызвал эту проблему; вы можете отключить selinux с помощью этой команды.
sudo setenforce 0
Задача решена
php artisan cache:clear sudo chmod -R 777 vendor storage
это позволяет разрешить запись приложения, рамки, журналов. Надеюсь, это поможет.
Вы не должны давать 777 разрешений. Это риск для безопасности. Пользователям Ubuntu, в Laravel 5, я стараюсь изменить реестр:
Попробуйте следующее:
sudo chown -R www-data:www-data storage
В системах на базе Ubuntu www-data является пользователем apache.
Для бродячих пользователей решение:
(в бродячих) php artisan cache: clear
(за пределами бродяг) chmod -R 777 app / storage
(в бродячих) композитор дамп-автозагрузка
Удостовериться, что вы chmod в своей местной среде, а не внутри бродяги, важны здесь!
Повторите попытку с помощью chmod -R 755 /var/www/html/test/app/storage
. Использование с sudo для Operation not permitted
в chmod. Используйте Проверить разрешение владельца, если все еще есть ошибка.
Если у вас есть Laravel 5 и ищет постоянное решение, применимое как использование командной строки php artisan
и сервер Apache, используйте это:
sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
sudo service apache2 restart
См. Подробное объяснение здесь .
Предложите правильное разрешение, если для Apache,
sudo chown -R apache:apache apppath/app/storage
ДЛЯ ЛЮБОЙ РАБОТЫ ОС С SELINUX: правильный способ разрешить httpd записывать в папку хранения laravel:
sudo semanage fcontext -a -t httpd_sys_rw_content '/path/to/www/storage(/.*)?'
Затем немедленно применить изменения:
sudo restorecon -F -r '/path/to/www/storage'
SELinux может быть болью, с которой можно справиться, но если он присутствует, я бы настоятельно советовал вам изучать его, а не полностью обходить его.
Согласно Laravel 5.4, который является последним, поскольку я пишу это, если у вас есть какие-либо проблемы, подобные этому, вы должны изменить разрешение. НЕ СЛУШАЙТЕСЬ К ЛЮБОЙ КТО РАССКАЗЫВАЕТ ВАМ УСТАНОВИТЬ 777 ДЛЯ ЛЮБОГО СПРАВОЧНИКА. У этого есть проблема безопасности. Измените разрешение папки хранения как это
sudo chmod -R 775 storage
Изменить разрешение папки для начальной загрузки
sudo chmod -R 775 bootstrap/cache
Теперь убедитесь, что вы выполняете обе команды из своего каталога приложений. Вы не столкнетесь с проблемами в будущем относительно разрешения. 775 не ставит под угрозу безопасность вашей машины.
У меня была такая же проблема, и приведенные ниже шаги помогли мне исправить эту проблему.
<?php echo exec('whoami'); ?>
И запустите файл из веб-браузера. Это даст пользователю apache. В моем случае это ec2-user, поскольку я использовал aws с cronjob, установленным в /etc/cron.d/. Это может быть другой пользователь для других.
sudo chown -R ec2-user:<usergroup> /app-path/public
Вам нужно определить и использовать правильные «пользовательские» и «пользовательские группы» здесь.
rm storage/logs/laravel.log
решил это для меня
Xampp для использования:
cd /Applications/XAMPP/htdocs chmod -R 775 test/app/storage
Каждый раз, когда я меняю app.php, я получаю разрешение, запрещающее писать bootstrap / cache / services.json, поэтому я сделал это, чтобы исправить это:
chmod -R 777 bootstrap/cache/
Если кто-то еще сталкивается с аналогичной проблемой с ошибкой прав доступа fopen, но достаточно разумно, чтобы не слепо chmod 777, вот мое предложение.
Проверьте команду, которую вы используете для разрешений, необходимых Apache:
fopen('filepath/filename.pdf', 'r');
«R» означает открытый для чтения, и если вы не редактируете файл, это то, что вы должны установить. Это означает, что apache / www-data требует, по крайней мере, разрешения на чтение этого файла, который, если файл создается через laravel, уже получит разрешение на чтение.
Если по какой-либо причине вы должны написать в файл:
fopen('filepath/filename.pdf', 'r+');
Затем убедитесь, что у apache также есть права на запись в файл.
В моем случае решение заключалось в изменении разрешения на app/storage/framework/views
и каталогов app/storage/logs
.
Просто запустите свой сервер, используя artisian
php artisian serve
Затем получите доступ к вашему проекту с указанного URL:
Если вы используете ларадок, попробуйте chown -R laradock:www-data ./storage
У меня такая же проблема при запуске брандмауэра на mac. решила проблему, изменив пользователя сервера Apache в файле https.conf:
# check user for php [vagrant] ubuntu ~ $ php -i | grep USER USER => ubuntu $_SERVER['USER'] => ubuntu [vagrant] ubuntu ~ $
Запустите apache под пользователем php вместо демон пользователя, чтобы решить проблему доступа к файлу с помощью php
# change default apache user from daemon to php user sudo sed -i 's/User daemon/User ubuntu/g' /opt/lampp/etc/httpd.conf sudo sed -i 's/Group daemon/Group ubuntu/g' /opt/lampp/etc/httpd.conf
теперь созданный php файл кеша может быть прочитан и отредактирован apache, не показывая никакой ошибки разрешения доступа.
У меня была аналогичная проблема. (Разрешение разрешено при разрешении, если оно настроено правильно) с Laravel 5.2 и 5.5
Проблема заключалась в том, что был включен SELinux, который не позволяет Apache записывать файлы даже с режимом 777. См. Ответ Solve 500 Laravel (Uncaught UnexpectedValueException: Laravel.log) для ответа на вопрос и ответ.
Возможно, это решает проблему и для вас.
После большого количества проб и ошибок с разрешениями на каталоги я оказался в эпифани … на диске не осталось места. Просто хотел поделиться, чтобы никто не был глуп, чтобы продолжать искать решение в неправильном направлении.
В Linux вы можете использовать df -h
чтобы проверить размер вашего диска и свободное пространство.
Установка разрешения на 777 – это, безусловно, ужасная идея!
… но
Если вы получаете ошибку разрешения, связанную с папкой «storage», это то, что сработало для меня:
1) Установите для «хранения» и его вложенных папок разрешение 777 с
sudo chmod -R 777 storage/
2) В браузере перейдите на страницу laravel laravel / public / (laravel создаст необходимые начальные файлы для хранения)
3) Разрешение на возврат 775 на хранение и его подпапки
sudo chmod -R 775 storage/
Для LARAVEL 5 попытайтесь создать папки кэша , сессий и представлений в хранилище / фреймворке с разрешением 777.
Я попытался предоставить 777
доступ к папке хранения, и у меня есть работа для меня
1) зайдите в свой корневой каталог laravel ( /var/www/html
для меня) и выполните следующую команду
chmod 777 -R storage