apache2 php7 не обрабатывает php

Apache 2 (Windows). PHP 7.2.0 Beta3. Не работают расширения. Почему?

Здравствуйте. Такая проблема:
Установлен Apache 2, прикреплён к домену. Всё работает, кроме расширений.

А на сайте они не работают (то есть, дело в Apache). Пробовал стабильный релиз 7.1.8, но такая же проблема.

В интернете решений не нашёл, может здесь кто-нибудь знает ответ? При выводе списка расширений отображаются только те, что скомпилированы в php7ts. Последним в списке отображается расширение apache2handler.

Не стройте преждевременные ответы.

phpinfo() что показывает?

а вообще extension_loaded() и get_loaded_extensions() вам в помощь.

При выводе списка расширений отображаются только те, что скомпилированы в php7ts. Последним в списке отображается расширение apache2handler.

По видимому, тут собрались великие сенсеи по ПХП, которые и могут только предлагать варианты из уже написанного мной текста. Может вы еще предложите apache перезагрузить несколько раз, или проверить, а точно ли я тот php апачем загружаю? Давайте без своих слепых тыканий.

Владислав Шинкарук, ну, по существу вы действительно тупой и хамили человеку, который пытался вам помочь.

Источник

Настройка HTTP/2 на примере Apache 2.4, PHP 7 и Ubuntu 18.04 LTS

Я понимаю, что, возможно, Апач на данный момент не является предпочтительным выбором для запуска на нём новых проектов, то тем не менее, он существует, здравствует и проекты на нём таки работают. Выбор на него может пасть по каким-то личным предпочтениям, по требованиям совместимости, или каким-то другим соображениям… не суть. В этой статье я хочу по пунктам описать, как настроить поддержку протокола HTTP/2 на веб-сервере Apache, потому что сам им пользуюсь и в такой статье нуждаюсь нуждался, и надеюсь, что кому-нибудь она тоже пригодится на практике.

Что такое HTTP/2? Как понятно из названия, это — вторая версия протокола HTTP. Подробнее о преимуществах Вы можете прочитать хотя бы на Википедии. От себя лишь скажу, что если Вы хоститесь не на шаред-хостинге, то поддерживать данный протокол — must have, как и, например, HTTPS. Да, для того, чтобы у Вас заработал HTTP/2, Вам потребуется полноценный доступ к консоли машины (пусть и к виртуальной) через ssh или каким-то иным образом, а также уже настроенный HTTPS (TLS/SSL). Ну что же, давайте приступим к делу.

Шаг первый. Обновление Apache

Протокол HTTP/2 поддерживается сервером Apache с версии 2.4.24, поэтому, если у Вас установлена более старая версия, — самое время её обновить. Но сначала проверим:

Эта команда выдаст что-то вроде такого:

В первой строчке указана версия сервера. Если она больше или равна 2.4.24, — можем смело переходить ко второму шагу. В противном случае, нужно обновить апач, актуальные версии которого Вы сможете найти в PPA известного (если Вам уже приходилось ставить что-то свеженькое на Debian/Ubuntu) разработчика — Ondřej Surý. PPA — это персональные пакеты, не включённые в официальные репозитории дистрибутивов. Поэтому, чтобы воспользоваться ими, сначала нужно научить систему, что и откуда брать:

Парень делает хорошее дело, и не против получить небольшой донат, о чём весьма недвусмысленно заявляет при подключении к его репам…

Далее, собственно, обновляем пакеты:

И снова проверяем версию Apache. Если всё прошло хорошо — на Вашем сервере будет стоять Apache, на котором можно настроить HTTP/2. Если всё пошло плохо — боюсь, это уже не тема данной статьи. А теперь переходим ко второму шагу.

Шаг второй. Использование FastCGI

Что такое FastCGI — лучше почитать, как я уже говорил, хотя бы в Википедии, потому что коротко не расскажешь. Вам нужно перейти на PHP, работающем в режиме FastCGI (php-fpm). Как это работает — дан хороший ответ на Тостере. Здесь же я в такие нюансы вдаваться не буду, а перейду сразу к установке:

После установки нам будет сказано буквально следующее: чтобы включить PHP 7.2 FPM в Apache2, сделайте:

Делаем. После этого нужно отключить mod_php, потому что вместо него у Вас теперь php-fpm.

Вообще говоря, версия PHP у Вас до этого могла стоять другая. Глянуть, что за модули у Вас установлены в системе можно в директории /etc/apache2/mods-available/, а какие активны в /etc/apache2/mods-enabled

Далее перезапускаем Apache

и переходим к третьему шагу.

Шаг третий. Переход с модуля Prefork на Event

Что такое MPM и в чём разница между prefork, event, worker — можно почитать вот в этой замечательной статье… но сейчас на самом деле важно знать только одно: «стандартный» prefork не очень совместим с HTTP/2, поэтому Вам нужно использовать более подходящий. Выключаем один, включаем другой, перезагружаем Apache.

Шаг четвёртый. Включаем HTTP/2

Либо в конфигурационный файл хоста, найти который можно в директории /etc/apache2/sites-enabled/, либо в конфиге самого сервера /etc/apache2/apache2.conf говорим, что нам нужна поддержка нового протокола:
Protocols h2 h2c http/1.1

Читайте также:  Кататься на скейте во сне

Что действительно важно — это h2. Два других пункта — на Ваше усмотрение. h2c — это поддержка HTTP/2 через TCP (а не TLS). http/1.1 — поддержка старой версии HTTP.

Включаем модуль http2 и перезагружаем сервер:

Источник

Upgrade to 16.04. php7 not working in browser

I just upgraded from 14.10 to 16.04 and am not sure how to configure PHP 7 in apache. I did modify the php7.0.conf file to uncomment that last lines, restarted apache2 and no change.

Do I need to change the apache2 setup to allow php?

PHP works from the command line so I am sure the php is properly installed.

Additionally, I get an error on phpadmin saying that the mbstring is missing.

7 Answers 7

Just like before, you have to install PHP for Apache.

For other missing modules there will be similar things to have to install as well.

To configure php7 to run with your server you need to do some configuration:

1. Make sure you remove any traces of php/php5

Open a terminal Ctrl + Alt + T and:

Now add the php7.0.conf and php7.0.load instead:

After dealing with the modules we now come to the /etc/apache2/conf-enabled directory. Remove any traces of php/php5 here as well by sudo rm

2. Restarting Apache2

Before restarting Apache make sure to clean out the Apache error.log then restart:

Now check the error.log by issuing cat /var/log/apache2/error.log | less (piping through less enables you to easy scroll up and down, q exits the output).

If your error.log contains many (and I literally mean a heap of) some MIBS not found do the following:

The check again the error.log it now should only contain 3 lines:

Your Apache with php7.0 should now be properly configured.

I got this problem as well.

It helped me to delete all PHP and reinstall php7.

All that was needed was:

php7 will be deleted, afterwards just to reinstall:

Im my case not only the php wasn’t working but phpmyadmin aswell i did step by step like that

In the last line I do add Include /etc/phpmyadmin/apache.conf

That make a deal with all problems

The solution I found for this problem was the default PHP.INI setting for short_open_tag. By default this is set to ‘Off’. My PHP code started with

If enabled the short_open_tag (by changing ‘Off’ to ‘On’ in my php.ini) and reset the apache server ( sudo service apache2 restart ) and PHP popped back alive.

Otherwise you will get the following error:

I, too, could run php scripts successfully from the command line on Ubuntu 16.04, but not in any browser. In an attempt to solve the problem I purged my existing copies of both php7.0 and apache2. Thereafter I reinstalled both from the command line including as well as apache2’s php library. Frustration followed when I attempted to run «a2enmod php7.0,» which informed me that the php7.0 module didn’t exist despite the fact that once again I was able to run php scripts from the command line. The instinct kicked in. Opening up Synaptic, I discovered that when I installed the apache2 php library from the command line, I installed only libapache2-mod-php7.0, and had forgotten also to install the «wrapper,» libapache2-mod-php, without which the former will not function.

Источник

Пошаговая настройка Apache с выбором версий php + Nginx как reverse proxy (с mod_pagespeed) на ubuntu 16.04

В интернете кучу статей по настройке сервера, настройки Apache, Nginx и т.п. В данной статье будет пошагово настроен простой shared хостинг. Все операции производятся через консоль.

В посте будут решены и описаны следующий задачи:

1. Установка Apache + PHP
2. Возможность выбора версий PHP
3. Возможность работы сайтов от разных пользователей, с ограничением на чтение директорий других сайтов.
4. Установка Nginx с модулем pagespeed от google
5. Настройка Nginx как reverse proxy

Все этапы будут содержать описание и пояснения. Сам пост писался больше для себя, чтобы не потерять порядок настройки, но будет очень полезным для новичков, которые начинают разбираться в администрировании сервера. В качестве сервера установлен Ubuntu 16.0.4 только с SSH.

ЭТАП 1 (Установка Apache + PHP)

Запускаем оболочку с root правами:

Ключ нужен для того чтобы в процессе установки, автоматически на все вопросы отвечал положительно. К примеру если выполнить:

Читайте также:  мутация коронавируса что это такое простыми словами

то в процессе установки нас спросят, действительно ли мы хотим установить.

Устанавливаем php (как mod_php)

На данном этапе у нас установиться php версии 7 как модуль apache.

ЭТАП 2 (Возможность выбора версий PHP)

На первом этапе мы установили сервер Apache + PHP при чем PHP у нас работает как модуль Apache. Существует несколько режимов работы PHP подробную информацию можно прочитать по ссылке «Коротко о CGI, FastCGI, PHP-FPM и mod_php».

Если вам лень читать, то объясню проще:

1. mod_php — сам Apache выполняет php скрипт.

Плюсы: работает быстро, требует минимум настроек и знаний
Минусы: скрипты выполняются от пользователя apache (как правило www-data)

2. CGI/FastCGI — Сервер Apache запускает прикладной скрипт интерпретатора php-cgi, который в свою очередь выполняет php скрипт

Плюсы: скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP), конфигурацию PHP можно сделать индивидуальной
Минусы: скорость работы, дополнительная настройка

3.PHP-FPM — это модернизированный fast-cgi сервер который постоянно держит готовые для работы пул-процессов.

Плюсы: скорость работы, скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP-FPM — самая распространная реализация)
Минусы: дополнительная настройка, занимает порт, на каждого пользователя открывается свой порт.

Мы остановимся на CGI/FastCGI. На самом деле многие может испугать, что он самый медленный, но на большинстве shared хостингов, именно этот режим работы (ispmanager использует именно этот режим работы). Нам потребуется собрать из исходников версии php которые нам необходимы.

2.1 Сборка php из исходников

Устанавливаем необходимые для сборки пакеты:

Символ \ используется как перенос строки, для удобства чтения.

Создаем папки для php:

Переходим в директорию в которой будут храниться исходники php

Скачиваем необходимую версию php и распаковываем ёё:

В последней команде мы скачали по ссылке php-5.6.18 и сохранили как php-5.6.18.tar.bz2
После чего распаковали архив.

Переходим в директория скаченного и распакованного php

Процесс сборки непривычно долгий, поэтому не стоит переживать по этому поводу. По завершению сборки можно проверить командой:

В результате будет что то вроде:

PHP 5.6.18 (cli) (built: Jun 8 2017 15:59:20)
Copyright © 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies

2.2 Настройка Apache

Далее нам потребуется чтобы Apache вызывал php скрипт через режим fastcgi. Устанавливаем и активируем mod_fcgi

перезапустим сервис Apache

2.3 Создание CGI скрипта

Создадим обертку для запуска PHP-FastCGI

Вставляем код, выходим CTRL+X и подтверждаем изменения.

Делаем файл испольняемым:

В той же директории создаем файл php.ini () можно скопировать /opt/source/php/php-5.6.18/php.ini-production.

2.4 Настройка хоста для Apache

В примере будет показана настройка виртуального хоста по умолчанию:

Перезапускаем настройки Apache:

ЭТАП 3 ( Возможность работы сайтов от разных пользователей, с ограничением на чтение директорий других сайтов.)

Для разграничения прав по пользователям у Apache есть 2 разных модуля suEXEC и ITK.

Рассмотрим как работает каждый из них:

ITK — При поступлении запроса, apache создает процесс-обработчик, который наследует права корневого процесса, но после проверки контекста меняет свои права на указанного пользователя.

suEXEC в нашем варианте предпочтительней из-за особенности архитектуры работы. Устанавливаем suEXEC

Важно, для правильной работы suexec необходимы правильно выставить права на директории.
Как располагать директории вы должны определиться сами, в примере приведется пример, и он не является оптимальным.

Иерархия папок следующая:

Копируем файлы настроек для php:

Создаем юзера (важно помнить что все пользователи в группе admin имеют доступ на запуск программ из sudo, поэтому при выборе имени admin он автоматически будет иметь права на выполнения sudo. В данном примере это не критично, но вам следует помнить об этом при создании пользователя).

Выставляем владельца папки:

Выставляем корневую директорию для пользователя:

Настраиваем виртуальные хосты в apache:

В настройках php.ini пользователя меняем session.save_path
session.save_path = /var/www/users/admin/temp/php-session

ЭТАП 4 (Установка Nginx с модулем pagespeed от google)

Забегая вперед, для поддержки pagespeed в Nginx требуется пересобрать сам Nginx с этим модулем, но чтобы потом не лазить дополнительно в настройках, проще сначало установить его.
Изменяем порты для Apache:

Собираем Nginx с pagespeed

Вначале необходимо установить все необходимы для сборки пакеты:

Создаем папки для исходников nginx:

Скачиваем и распаковываем pagespeed и psol. Yt cnjbn g

Сам psol скачивается и распаковывается в директории с ngx_pagespeed. Переходим в папку с Ngnix

Проверяем версию ngnix (по умолчанию в ubuntu 16.0.4 устанавливается 1.10.0):

Загружаем т версию NGINX:

Собираем nginx с теми же параметрами что и установленный, но в конце добавляем дополнительные модули:

Собранный бинарный файл Nginx располагается в директории /opt/source/nginx/nginx-1.10.0/objs/nginx. Для того чтобы установить, требуется просто заменить текущий испоняемый файл Nginx на собранный.

Читайте также:  что находится под правым крылом пежо 206

Остановим Nginx, заменим файл, и перезапустим его.

#Переименовываем (на всякий случай) текущий nginx в nginx_backup:

# Перемещаем на его место новый собранный бинарник:

Создаем папку хранения кэша для pagespeed:

Добавим /etc/nginx/nginx.conf в секцию http:

ЭТАП 5 (Настройка Nginx как reverse proxy )

Скажу скажу что в интернете кучу статей для настройки Nginx как reverse proxy. Я лиш приведу ознакомительный вариант настройки.

Источник

Apache показывает php-код вместо выполнения

недавно я пытался установить php и apache на свой компьютер. Через много часов они установлены. Я изменил httpd.conf и php.ini-файлов, как все говорят. Затем я создал простой PHP-скрипт:

но когда я пытаюсь запустить его с http://127.0.0.1/phpinfo.php он просто показывает исходный код вместо выполнения. Я использую apache2, php5 и windows vista. Я безуспешно искал по всему интернету и почти бьюсь головой о стену. Мочь кто-нибудь спас меня от сотрясения мозга?

20 ответов

зарегистрироваться var/log/apache2/error.log чтобы узнать, есть ли у вас какие-либо ошибки.

Вау, здесь много решений! Вот что я сделал Ubuntu 16.04:

для PHP 7 (может применяться и к предыдущим версиям), но мне пришлось это сделать:

добавьте это в нижнюю часть /etc/apache2 / apache2.conf

запустить из терминала:

тогда не забудьте перезапустить Apache, чтобы он знал, что вы изменили материал:

так просто uncoment в PHP загрузить модуль в httpd.conf

другой ответ, который работал для меня. Это, чтобы установить [sudo] apt-get install libapache2-mod-php5.X

надеюсь, я помог кому-то там. о/

публикация того, что сработало для меня, в случае, если помогает кому-то по дороге, хотя это необычный случай.

Я установил обработчик, чтобы заставить мой веб-хост использовать более высокую версию php, чем по умолчанию. Был 5.1, но я хотел 5.6, поэтому у меня было это:

при попытке запустить мой сайт локально, что там вызвало вывод php-кода в браузер. Удаление его решило проблему.

вы можете удалить свою .htaceess file и пусть система создает новый (пустой или базовый). Возможно, некоторые строки, которые вы добавили, являются неправильными утверждениями или что-то еще внутри вызывает проблему. Затем вы можете добавить строку за строкой из своего старого .реврайт чтобы увидеть, что вызвало проблему.

Это сработало для меня. Строки, говорящие машине не отображать расширения php, были проблемой в моем случае (RewriteCond и RewriteRule). Мой старый .реврайт файл работал просто отлично на общем сервере, но эта проблема появилась, когда я переключился на VPS.

если модуль userdir включен и ваш сайт находится в userdir (

/public_html), вы должны проверить /etc/apache2/mods-enabled/php5.conf. Следующая часть заставляет его работать (на Ubuntu 14.10 utopic):

Если вы являетесь пользователем ubuntu, после установки apache необходимо выполнить следующую команду в новой установке

в моем случае работает отлично.

что сработало для меня:

в активном httpd.конф, найти

не хватало следующего

после перезапуска apache,.php файлы правильно проанализированы.

и php снова отображается правильно.

ни один из вышеперечисленных не применялся или не работал для меня. PHP7, Apache Httpd 2.2 на CentOS 6

факт в том, что я установил (все с yum) php перед Apache. вы должны сделать обратное: сначала всегда устанавливайте Apache, затем PHP, а затем он работает. Действительно, Вы, вероятно, отсутствует libphp7.so и libphp7-zts.so на /etc/httpd/modules/

это был ярлык, который я сделал для запуска html-документов, просто щелкнув html-файл в моем каталоге и запустив в моем веб-браузере, когда в реальность чтобы проверить, обрабатывается ли php в вашей форме, вы должны запустить html через свои серверы. Очень простой протокол, который я пропустил.

правильно: http://localhost:your port number/form/form.html

теперь php должен быть обработан, как только вы нажмете кнопку отправки

У меня была та же проблема. Когда я запускаю php-файл, веб-браузер показал мне php-код вместо его выполнения. Я пробовал много раз: удалить / переустановить wampserver64, работать с настройками/модулями PHP/Apache и т. д. Через 2 дня: я понял, что когда я пытался запустить php-файл в notepad++, нажав комбинацию по умолчанию «ctrl + alt + shift + R» для chrome. Он пытался исполнить мой php-файл, такие как: «файл» / » //с:/wamp64/ВСП/бла/бла..»в адресной строке моего браузера. Это была моя проблема. Я внес изменения в соответствии с page настройка Notepad++ для запуска php на localhost?. Моя проблема была решена. Но через 2 дня..

запустите Xampp (apache) как администратор. В google chrome введите:

т. е. если созданная вами папка «LearnPhp», файл » chapter1.РНР» введите

Я создал эту папку в папке xampp в папке htdocs, которая создается при загрузке xampp.

Источник

Образовательный портал