Laravel Ошибка «Отказано в доступе» в CentOs 7 - PullRequest
0 голосов
/ 18 апреля 2020

Я только что установил CentOs 7 с httpd, PHP 7.3 и MariaDB. Я настроил виртуальный хост следующим образом:

<VirtualHost *:80>
  ServerName tenancy
  DocumentRoot /var/www/vhosts/tenancy/public
</VirtualHost>

Я получил приложение, отображающее страницу приветствия laravel по умолчанию, но каждая страница, взаимодействующая с базой данных, получила SQLSTATE[HY000] [2002] Permission denied (SQL: select * from tenant_modules where (tenant_id = 28))

Хотя для каждого API звоните, я получил file_put_contents(/var/www/vhosts/tenancy/storage/framework/cache/data/44/d1/44d142505dd1a3b497197e2f459d2aec779e9ed6): failed to open stream: Permission denied

Я установил разрешение на www folder на 777 -R и даже сделал chcon -R -t httpd_sys_rw_content_t -R \var\www, но ничего не изменилось. Кроме того, я написал функцию php только для проверки mysql ext, и она работает.

Но когда я запускаю php artisan serve, она работает нормально. У вас есть представление о том, что может быть решением?

1 Ответ

0 голосов
/ 18 апреля 2020

Похоже, проблема с разрешением. Я подозреваю, что у вашего Apache пользователя нет прав на чтение и запись в папке Laravel приложения.

Я не уверен, что такое группа / пользователь Apache в CentO. Я предполагаю, что это www-data, пожалуйста, измените при необходимости.

Отказ от ответственности: Это работает на моей машине (Debian), но могут быть и более эффективные способы установки разрешений для приложения Laravel , Отзывы приветствуются.


  1. Добавить пользователя в группу www-data:

    sudo usermod -aG www-data youruser

  2. Изменить владелец проекта и пользователь группы:

    sudo chown -R youruser:www-data /var/www/your-project/

  3. Измените права доступа к файлам проекта на 664:

    sudo find /var/www/your-project/ -type f -exec chmod 664 {} \;

  4. Измените разрешения каталога вашего проекта на 775:

    sudo find /var/www/your-project/ -type d -exec chmod 775 {} \;

  5. Установите разрешения ACL, чтобы убедиться, что новые файлы, созданные веб-сервером, имеют правильные разрешения:

    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/bootstrap/cache/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/logs/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/framework/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/app/
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...