Centos 7, PHP 7.2 В доступе отказано через Apache2.4

Я не могу войти в mysql через pdo, когда пытаюсь выполнить соединение с db через apache, но на cli он работает нормально

в symfony 4.1 controller я вставил эту строку

new PDO('mysql:host=db;dbname=test_db', 'xyz', 'uzzzxxxx');

и он дает Exception, но на Symfony4.1 command работает та же строка, и я могу запросить db. Что может вызвать это? Контроллер и команда в одной связке

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
528
3

Ответы 3

Вы должны дать Apache возможность записи в файлы журналов и загрузки файлов? Давайте поиграем с SELinux. И установите правильное владение и разрешения

# Ownership

sudo chown apache: apache -R / data / www / html / sites / mysite cd / data / www / html / sites / mysite

Права доступа к файлам, рекурсивные

найти . -type f -exec chmod 0644 {} \;

Разрешения директории, рекурсивный

найти . -type d -exec chmod 0755 {} \;

SELinux обслуживает файлы с Apache, ресурсный

sudo chcon -t httpd_sys_content_t / data / www / html / sites / mysite -R

Разрешить запись только в определенные каталоги

sudo chcon -t httpd_sys_rw_content_t / data / www / html / sites / mysite / logs -R sudo chcon -t httpd_sys_rw_content_t / data / www / html / sites / mysite / uploads -R

httpd_sys_content_t – for allowing Apache to serve these contents and httpd_sys_rw_content_t – for allowing Apache to write to those path.

Вот и все! Мне понравилось, и вы поделитесь!

Я проверю ваше решение

Viszman 07.11.2018 14:55

Я считаю, что для Apache вы ищете localhost в качестве хоста.

 new PDO('mysql:host=localhost;dbname=test_db', 'xyz', 'uzzzxxxx');

Хотя я не знаком с Symfony, возможно, он использует разные учетные данные или может быть, когда он обнаруживает ошибку, он устанавливает для нее значение localhost, тогда как Apache этого не делает.

Я считаю, что php, выполняемый Apache, не может получить доступ к хосту db, и тот же код, выполняемый непосредственно в cli, каким-то образом не имеет этих ограничений

Viszman 07.11.2018 14:57

В моем случае виноват SELinux, отключив его, теперь он работает на случай, если кто-то захочет проверить, есть учебник https://linuxize.com/post/how-to-disable-selinux-on-centos-7/

Другие вопросы по теме