Назад | Перейти на главную страницу

Php выполняется с другими результатами в командной строке, чем при просмотре в Apache

Я установил веб-сервер CentOS 7 vm со стеком LAMP. Последние несколько дней я пытался заставить работать LDAPS-соединение с моим контроллером домена Windows Server 2008 R2.

Мне удалось подключиться к своему DC с помощью: ldapsearch -H "ldaps://server.ad.com" -D "domain\user-name" -W на пару дней. Я также могу использовать openssl s_client -connect server.ad.com -prexit команда для проверки сертификата SSL (поскольку я использую самозаверяющий сертификат).

Однако всякий раз, когда я перехожу на свою веб-страницу PHP в /var/www/html/test/index.php, я всегда получаю ошибку «Не удается связаться с сервером LDAP» при попытке ldap_bind(). Вчера я попытался запустить файл PHP из командной строки: php /var/www/html/test/index.php и обнаружил, что мой PHP ldap_bind () работает каждый раз при использовании командной строки.

Поискав в Интернете, я обнаружил, что часто PHP-CLI и PHP Apache используют разные файлы php.ini, но запускают php --ini команда показывает мне только один файл php.ini, расположенный в /etc/php.ini.

Я пытаюсь понять, почему PHP правильно выполняется из командной строки, но не при просмотре / запуске через Apache. Мы будем очень благодарны за любую информацию / идеи, которые помогут решить эту проблему, спасибо!

Если он работает из командной строки, но не через Apache, то это одно из немногих.

  1. Пользователь, запускающий код (вы против apache)
  2. SELinux мешает

Я предполагаю, что они как бы взаимосвязаны, но я бы посоветовал попробовать страницы с отключенным SELinux и перейти оттуда.

Как сказал GregL, это SELinux связанных, у меня была такая же проблема сегодня, и я не помнил, что SELinux был включен.

[root@centos7 ~]# getsebool -a | grep http | grep ldap
httpd_can_connect_ldap --> off

Итак, если вы не хотите отключать SELinux глобально, авторизуйте его

setsebool -P httpd_can_connect_ldap on

Возможно, вам понадобятся другие функции (удаленный доступ к базе данных, ...), проверьте с помощью

getsebool -a | grep httpd