- Apache Virtual Host не анализирует PHP
- Apache HTTP Server (Русский)
- Contents
- Установка
- Настройка
- Дополнительные опции
- Пользовательские каталоги
- TLS/SSL
- Виртуальные хосты
- Управление большим количеством виртуальных хостов
- Расширения
- Дополнительные параметры
- Использование php5 c php-fpm и mod_proxy_fcgi
- Использование php5 c apache2-mpm-worker и mod_fcgid
- MySQL/MariaDB
- Решение проблем
- Просмотр журнала и текущего состояния Apache
- PID file /run/httpd/httpd.pid not readable (yet?) after start
- Обновление с Apache 2.2 до 2.4
- Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
- Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHP
Apache Virtual Host не анализирует PHP
Я решил включить виртуальные хосты на моем сервере Apache и решил сделать его на основе портов.
Первое, что я сделал, конечно, было RTM. Я следовал инструкциям, найденным здесь . Ну, это сработало – вроде. Что касается виртуального хоста, он это делает. Содержимое, выведенное из: 80, отличается от 8080.
Но PHP не работает. «Исходный сайт» (порт 80) работает с PHP просто отлично. Однако сайт порта 8080 отправляет PHP в браузер. Я ничего не вижу в браузере, но исходный код показывает:
Этот вопрос, по-видимому, очень слабо документирован на нескольких веб-сайтах, но либо я не могу найти решение в них, либо указанное решение не работает для меня.
Опять же, сам виртуальный хост работает нормально. PHP, с другой стороны, нет.
Любые идеи о том, что это может быть? Какой контент из моего файла httpd.conf я должен предоставить, чтобы я не взорвал свой вопрос, скопировав / вставив все это?
(Извините, что забыл опубликовать, что у меня были эти места, Фил. Добавление во избежание дальнейшей путаницы)
Я попытался добавить это в теги:
Это также может быть связано с файлами php с использованием коротких php-тегов вместо . По умолчанию короткие короткие теги не включены в файле конфигурации php.ini.
Это, наконец, привело меня к правильному пути:
В разделе я включил следующие строки:
Или, отредактированная копия / вставка решения на моем сервере:
Ваш ответ не помог мне.
Для Ubuntu 12.04:
В моем случае проблема была устранена при запуске apt-get install libapache2-mod-php .
Мне нужно загрузить centos vm, чтобы проверить apache conf, но на ubuntu. У меня есть намного больше информации в моей конфигурации под virtualHost
Убедитесь, что следующая строка, загружающая модуль php, не закомментирована –
Привет Это помогает мне решить мою проблему:
Для моей конфигурации мне пришлось добавить эту строку в virtualhost (внутри ):
Это помогло мне выйти из a2enmod php5 , если модуль не существует, переустановите lamp-server, набрав apt-get install lamp-server^
единственное, что помогло мне после всех попыток добавить apache2.conf
Источник
Apache HTTP Server (Русский)
Перевод этой статьи или раздела не отражает оригинальное содержание.
Apache HTTP Server, или сокращенно Apache — популярный веб-сервер, разработанный Apache Software Foundation.
Apache часто используется вместе с языком сценариев PHP и СУБД MySQL. Такую комбинацию обычно называют LAMP (Linux, Apache, MySQL, PHP). Эта статья объясняет, как настроить Apache и как интегрировать с ним PHP и MySQL.
Если вам нужно быстро создать окружение для разработки и тестирования, то можете просто установить Xampp.
Contents
Установка
Настройка
Файлы настроек Apache находятся в /etc/httpd/conf . Основным файлом является /etc/httpd/conf/httpd.conf , который может по ссылкам включать в себя дополнительные файлы с настройками. В большинстве случаев будет достаточно стандартных настроек из этого файла. По умолчанию корневым каталогом веб-сервера является /srv/http .
Для старта Apache запустите службу httpd.service .
После этих действий Apache должен запуститься. Проверьте работает ли он, набрав в адресной строке браузера http://localhost/ . Веб-сервер должен отправить вам простую тестовую страничку.
При необходимости дальнейшей настройки сервера смотрите следующие разделы.
Дополнительные опции
Следующие опции (директивы) в /etc/httpd/conf/httpd.conf могут быть вам интересны:
По соображениям безопасности при запуске сервера Apache от имени суперпользователя (напрямую или через скрипт инициализации) происходит смена идентификатора пользователя (UID), от имени которого выполняется процесс сервера. По умолчанию используется пользователь http , который не имеет привилегированных полномочий в системе. Это порт, через который Apache принимает входящие соединения. Если сервер имеет выход в интернет через маршрутизатор, необходимо будет настроить перенаправление этого порта. Если вы используете Apache для разработки и тестирования, вы можете разрешить только локальный доступ к нему. Для этого укажите Listen 127.0.0.1:80 . Адрес электронной почты администратора, который будет выводиться, например, на странице ошибки Apache. Это корневая директория Apache, в которой можно разместить ваши веб-страницы. Измените ее, если нужно, но не забудьте также поменять путь в директиве на новое расположение DocumentRoot , иначе вы, скорее всего, получите сообщение об ошибке 403 Error (недостаточно полномочий) при попытке получить доступ к новому корневому каталогу Apache. Также не забудьте изменить строку Require all denied на Require all granted , иначе снова получите ошибку 403 Error. Помните, что директория DocumentRoot и ее родительские папки должны иметь разрешения на запуск для всех (можно установить командой chmod o+x /path/to/DocumentRoot> ), в противном случае вы получите ошибку 403 Error. Запрещает переопределение настроек. Если в секции указана эта директива, Apache будет полностью игнорировать настройки в файле .htaccess . Обратите внимание, что теперь такая настройка для Apache 2.4 является настройкой по умолчанию, поэтому если вы планируете использовать .htaccess , вам необходимо дать соответствующие разрешения. Если вы собираетесь включить модуль mod_rewrite или использовать настройки в .htaccess , вы можете определить какие из директив, объявленных в этих файлах, могут перезаписывать конфигурацию сервера. Для получения дополнительной информации обратитесь к документации Apache.
Дополнительные настройки можно найти в /etc/httpd/conf/extra/httpd-default.conf .
Чтобы полностью отключить вывод версии Apache в генерируемых сервером страницах, добавьте:
Чтобы подавить вывод такой информации, как версии Apache и PHP, добавьте:
Пользовательские каталоги
По умолчанию доступ к каталогам пользователей возможен по адресу http://localhost/
»user»/ , который показывает содержимое каталога
/public_html (его имя и расположение задается в файле /etc/httpd/conf/extra/httpd-userdir.conf ).
Если вы не хотите, чтобы пользовательские каталоги были доступны через web, закомментируйте следующую строку в /etc/httpd/conf/httpd.conf :
Убедитесь, что права доступа к вашему домашнему каталогу и
/public_html позволяют получать доступ к файлам в них всем пользователям:
Однако с точки зрения безопасности вышеприведенное решение слишком фривольно. Правильнее поступить по-другому. Сначала добавьте пользователя http в группу, которой принадлежит ваша домашняя папка. Например, если ваша домашняя папка и все ее подкаталоги принадлежат группе piter, можно проделать следующее:
После этого назначьте права на чтение и исполнение для каталогов
/public_html и, рекурсивно, на остальные подкаталоги для
/public_html для членов группы (в нашем примере для членов группы piter). Опираясь на нижеприведенный шаблон, осуществите эти мероприятия:
Перезапустите службу httpd.service , чтобы изменения вступили в силу. Смотрите также Umask#Set the mask value.
TLS/SSL
Для использования TLS/SSL необходимо установить openssl .
Создайте закрытый ключ и запрос на получение сертификата (CSR). Также вы можете самозаверить CSR (который создаст сертификат):
Теперь раскомментируйте следующие строки в /etc/httpd/conf/httpd.conf :
Перезапустите службу httpd.service , чтобы изменения вступили в силу.
Виртуальные хосты
Если вы хотите, чтобы Apache обслуживал не один, а несколько хостов, раскомментируйте следующую строку в файле /etc/httpd/conf/httpd.conf :
Укажите свои виртуальные хосты в /etc/httpd/conf/extra/httpd-vhosts.conf . Файл уже содержит пример полностью рабочих настроек, что поможет вам быстро выполнить настройки под ваши нужды.
Для проверки виртуальных хостов на локальной машине добавьте их виртуальные имена в ваш файл /etc/hosts :
Перезапустите httpd.service , чтобы изменения вступили в силу.
Управление большим количеством виртуальных хостов
Если Apache используется для обслуживания очень большого количества виртуальных хостов, вам может быть полезна возможность их легко включать и отключать. Для этого рекомендуется создавать собственный файл настроек на каждый хост и хранить все эти файлы в одном каталоге, например /etc/httpd/conf/vhosts .
Сначала создайте каталог:
Теперь создайте в нем отдельные конфигурационные файлы:
И включите эти файлы в основной файл настроек /etc/httpd/conf/httpd.conf :
Теперь можно быстро включать/отключать требуемые виртуальные хосты, просто закомментировав или раскомментировав соответствующие директивы Include в основном файле настроек.
Очень простой файл виртуального хоста будет выглядеть следующим образом:
Расширения
Для использования mod_mpm_prefork , откройте /etc/httpd/conf/httpd.conf и поменяйте строку
Также вы можете просто использовать mod_proxy_fcgi (смотрите #Использование php7 c php-fpm и mod_proxy_fcgi [ссылка недействительна: раздел не найден] ).
Чтобы включить модуль PHP, добавьте следующие строки в /etc/httpd/conf/httpd.conf :
- Поместите эту строку в любом месте после строки LoadModule dir_module modules/mod_dir.so :
- Разместите эту строку в конце списка Include :
Если ваш корневой каталог DocumentRoot не /srv/http , добавьте его в список open_basedir в /etc/php/php.ini (необязательно):
Перезапустите службу httpd.service , чтобы изменения вступили в силу.
Чтобы убедиться в том, что PHP настроен корректно, создайте файл test.php в каталоге DocumentRoot (то есть в /srv/http/ или
/public_html ) и поместите в него следующий код:
По адресу http://localhost/test.php или http://localhost/»
пользователь»/test.php вы должны увидеть информационную страницу PHP.
Если PHP-код не исполняется, а на странице браузера вы увидите содержимое test.php , проверьте добавили ли вы Includes в строку Options для вашего корневого каталога в /etc/httpd/conf/httpd.conf . Кроме того, убедитесь, что TypesConfig conf/mime.types раскомментирован в секции . Также можно попробовать добавить нижеследующую строку в секцию файла httpd.conf :
Дополнительную информацию вы можете получить на странице PHP.
Дополнительные параметры
Рекомендуется правильно настроить вашу временную зону (список временных зон) в /etc/php/php.ini по примеру:
По желанию включите режим показа ошибок при отладке PHP-кода, для этого измените значение опции display_errors на On в файле /etc/php/php.ini :
Ежели вы хотите использовать модуль libGD , установите php-gd и раскомментируйте extension=gd.so в /etc/php/php.ini :
Для использования модуля mcrypt установите php-mcrypt AUR и раскомментируйте extension=mcrypt.so в /etc/php/php.ini :
Не забудьте добавить индексные файлы /etc/httpd/conf/extra/php7_module.conf , если это необходимо:
Для дополнительной настройки, пожалуйста прочтите PHP.
Использование php5 c php-fpm и mod_proxy_fcgi
- Установитеphp-fpm
- Задайте listen в /etc/php/php-fpm.conf следующим образом:
- Добавьте следующие строки в /etc/httpd/conf/httpd.conf :
- Если у вас добавлен модуль php, уберите его, так как он больше не нужен:
- Перезапустите демон apache php-fpm:
Использование php5 c apache2-mpm-worker и mod_fcgid
- Раскомментируйте следующую строку в /etc/conf.d/apache :
- Раскомментируйте следующую строку в /etc/httpd/conf/httpd.conf :
- Установите пакеты mod_fcgid и php-cgi , доступные в официальных репозиториях.
- Создайте файл /etc/httpd/conf/extra/php5_fcgid.conf со следующим содержимым:
- Создайте каталог и символическую ссылку в нем на php-cgi:
- Отредактируйте /etc/httpd/conf/httpd.conf :
и перезапустите службу httpd.service .
MySQL/MariaDB
Следуйте инструкциям на странице PHP#MySQL/MariaDB.
После выполнения настройки, перезапустите службу mysqld , чтобы изменения вступили в силу.
Решение проблем
Просмотр журнала и текущего состояния Apache
Текущее состояние службы httpd вы можете вывести командой systemctl status httpd .
Лог-файлы Apache вы найдете в каталоге /var/log/httpd .
PID file /run/httpd/httpd.pid not readable (yet?) after start
Если вы получаете такую ошибку, закомментируйте строку:
в файле настроек Apache.
Обновление с Apache 2.2 до 2.4
Если вы используете php-apache , посмотрите инструкции к Apache с PHP выше.
Управление доступом было изменено. Приведите все директивы Order , Allow , Deny и Satisfy к новому синтаксису с Require . mod_access_compat позволит использовать устаревший формат на время этапа перехода.
Подробную информацию вы найдете на странице Upgrading to 2.4 from 2.2.
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
Если не удалось запустить php5_module при старте httpd.service и вы получаете следующее сообщение об ошибке:
Это значит, что Apache работает c поточным MPM, но используется не потокобезопасная версия PHP. В этом случае, следует заменить mpm_event_module на mpm_prefork_module :
Источник
Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHP
Скорее всего какие-то части этой статьи уже знакомы многим хаброжителям, но в связи с покупкой нового рабочего ноутбука я решил собрать все крупинки воедино и организовать удобное средство для разработки. Мне часто приходится работать со множеством маленьких проектов, с разными версиями PHP, часто переводить старые проекты на новые версии. В далёком прошлом, когда я был пользователем Windows то использовал OpenServer. Но с переходом на Linux мне нехватало той простоты создания хостов и переключений версий которые были в нём. Поэтому пришлось сделать еще более удобное решение на Linux =)
будет запущен тот же файл но уже с версией PHP 7.2.7
Другие версии доставляются аналогичным описанным ниже способом.
Для создания еще одного сайта просто создаем в /var/www/ папку имеющую окончание .loc, внутри которой должна быть папка public_html являющаяся корнем сайта
Вот собственно и все. Как без дополнительных мучений, перезапусков, и редактирований конфигов имеем автоматическую систему для работы с сайтами.
Всё это я проверну на LinuxMint19, он на базе Ubuntu18.04, так что с ним все будет аналогично.
Для начала поставим необходимые пакеты
Postfix ставим в качестве плюшки, как простое решение(в мастере установки, всё по умолчанию выбираем) для отправки почты с локальной машины.
Так как это локальная разработка и я единственный пользователь. То мне удобней перенести папку с проектами в мою домашнюю дерикторию. Она у меня маунтится отдельным диском и мигрирует при переустановке системы. Самый простой способ это создать ссылку, тогда не нужно менять пути в настройках да и путь привычный для всех.
Скопируем папку созданную апачем в домашний каталог, создадим на ее месте ссылку, не забыв поменять пользователя на себя и обменяться группами с апачем.
Создадим папку в которой будем собирать исходники PHP для разных версий
Также нам понадобится папки для CGI скриптов
И runtime папка для этих же скриптов, с правами
И так как каталог у нас находится в оперативной памяти, добавим его создание при старте системы, для этого добавим в /etc/tmpfiles.d/fcgid.conf
У меня dnsmasq-base идет с коробки, если нет то его всегда можно доставить.
Добавим правило в его конфигурацию. Найти файл конфигурации dnsmasq.conf можно так
Либо если он как и у меня является частью NetworkManager то создать новый файл конфигурации в /etc/NetworkManager/dnsmasq.d/local.conf
Добавим в него строчку для перенаправление нашего локального домена на локальную машину.
Также нужно включить необходимые модули апача
Предварительная подготовка завершена, приступаем к сборке различных локальных версий PHP. Для каждой версии PHP проделываем следующие 4 шага. На примере 5.6.36
1. Скачиваем исходники нужной версии и распаковываем их
2. Cобираем из исходников нужную версию PHP, и помещаем ее в /opt/php-5.6.36
3. Создаем CGI для обработки этой версии в /var/www/cgi-bin/php-5.6.36.fcgi
4. Делаем файл исполняемым
5. Добавляем экшен для обработки каждой версии в /etc/apache2/mods-available/fcgid.conf
6. Добавляем правило для обработки каждой версии в /etc/apache2/sites-available/000-default.conf
Ну вот и всё. Осталось только перезапустить apache и dnsmasq и пользоваться
Источник