Я не могу войти в mysql через pdo, когда пытаюсь выполнить соединение с db через apache, но на cli он работает нормально
в symfony 4.1 controller я вставил эту строку
new PDO('mysql:host=db;dbname=test_db', 'xyz', 'uzzzxxxx');
и он дает Exception, но на Symfony4.1 command работает та же строка, и я могу запросить db.
Что может вызвать это? Контроллер и команда в одной связке






Вы должны дать 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 {} \;
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.
Вот и все! Мне понравилось, и вы поделитесь!
Я считаю, что для Apache вы ищете localhost в качестве хоста.
new PDO('mysql:host=localhost;dbname=test_db', 'xyz', 'uzzzxxxx');
Хотя я не знаком с Symfony, возможно, он использует разные учетные данные или может быть, когда он обнаруживает ошибку, он устанавливает для нее значение localhost, тогда как Apache этого не делает.
Я считаю, что php, выполняемый Apache, не может получить доступ к хосту db, и тот же код, выполняемый непосредственно в cli, каким-то образом не имеет этих ограничений
В моем случае виноват SELinux, отключив его, теперь он работает на случай, если кто-то захочет проверить, есть учебник https://linuxize.com/post/how-to-disable-selinux-on-centos-7/
Я проверю ваше решение