Информация об ОС и сервере:
- CentOS 6.4 (окончательная версия)
- Apache 2.2.15
- PHP 5.5.1
Ранее у меня был установлен php 5.3.x, но я решил обновить его. Сначала я удалил php 5.3.x, а затем установил php 5.5.1, но после завершения установки apache не проанализировал файлы php, которые он только что загрузил. Я проверял похожие вопросы здесь, в stackoverflow, но пока ни один из них мне не помог.
Для записи у меня есть следующие строки в моих httpd.conf и php.conf, которые должны заставить php работать, но не работают:
AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php
Буду очень признателен за любую помощь. Спасибо.
РЕДАКТИРОВАТЬ:
У меня есть эти строки в php.conf
<IfModule !worker.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
РЕДАКТИРОВАТЬ:
Удалив
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
apache больше не скачивает файл. Теперь apache показывает исходный код, но не всю его часть. я добавил
AddType text/html .php
но не повезло.
httpd.conf
прокомментирован ли модуль php или нетОтветы:
Правильный AddType для php - application / x-httpd-php
Также убедитесь, что ваш модуль php загружен
Когда вы настраиваете апач попытайтесь просмотреть страницу из другого браузера - У меня были дни, когда хром упорно кэширует результат и сохраняет загрузку исходного кода в то время как в другом браузере, это просто прекрасно.
источник
/etc/httpd/conf/httpd.conf
Сегодня я столкнулся с этой проблемой, и ни одно из описанных решений не помогло мне. Итак, вот еще одна возможная причина:
Если у вас есть что-то вроде
в
.htaccess
файле папки веб-содержимого это может привести к тому, что ваши сценарии PHP перестанут работать. В моем случае сервер не зналx-mapp-php6
тип, поскольку этот.htaccess
файл был импортирован с другого веб-хоста при переносе содержимого веб-сайта.Просто удаление
AddHandler
строки из.htaccess
файла решило это для меня.источник
AddHandler application/x-httpd-php54 .php54 .php
пришлось удалить.После долгих усилий я наконец решил проблему.
Если вам будет предложено загрузить
.php
файл вместо его выполнения, то вот идеальное решение: я предполагаю, что вы уже установили PHP5 и по-прежнему получаете эту ошибку.Это оно.
Но если вы все еще получаете сообщение об ошибке:
Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it
затем сделайте следующее:
Оказывается, файлы не должны храниться
mods-enabled
, а должны храниться вmods-available
. Затем в моделях с включенными модами должна быть создана символическая ссылка, указывающая на файл, хранящийся в доступных модах.Сначала удалите оригинал:
Затем создайте символическую ссылку:
Надеюсь, твоя проблема решена.
источник
Взгляните на свои директивы addtype.
Мне кажется, что Apache сообщает браузеру, что он отправляет тип документа application / php для сценариев с расширениями, такими как .php5. Фактически, Apache должен сообщить браузеру, что сценарий выводит текст / html.
Пожалуйста, попробуйте это:
Что касается приведенного выше предложения о том, что вы должны сообщить браузеру, что вы выводите PHP-скрипт: мне это показалось необычной идеей. Я погуглил и обнаружил, что в сети довольно много дискуссий по этому поводу. По-видимому, есть случаи, когда вы можете сказать, что отправляете PHP-скрипт (даже если Apache должен выполнять скрипт и выдавать текст / html), а также есть случаи, когда браузер просто не распознает этот конкретный Mime Тип.
Очистка кеша браузера - всегда хорошая идея.
Если это будет полезно, вот копия моего файла /etc/httpd/conf.d/php.conf с сервера под управлением CentOS 5.9:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
источник
Это могло произойти из-за отсутствия модулей, необходимых для вашего php. Предполагая, что у вас установлен php7, выполните поиск доступных модулей php7, используя
Вышеупомянутая команда перечислит все доступные модули PHP7 для установки. Вы можете начать установку таких модулей, как,
sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
источник
Если у вашего .htaccess есть что-то вроде этого ... AddHandler application / x-httpd-php53 .php .php5 .php4 .php3, затем прокомментируйте его и попробуйте еще раз обновить, это сработало для меня ...
источник
У меня такая же проблема. Apache не загружает файлы php с определенного веб-сайта, а просто загружает их. Я прочитал этот пост и ответы, и я увидел, что эта строка находится на последнем месте файла .htaccess:
AddHandler x-mapp-php5.5 .php
Я прокомментировал это, и все работает нормально.
Спасибо всем !!!
источник
У меня раньше была аналогичная проблема после обновления с 5.3 до 5.4. Но моя установка выглядит немного иначе, поскольку я запускаю Debian и использую fcgid для сервера страниц PHP, а не модуль PHP5 apache / cgi. Поэтому после того, как я обновился, он также установил php5_cgi, который столкнулся с моей настройкой fcgid и больше не выполнял файлы PHP.
Мне пришлось отключить модуль Apache и перезапустить Apache
Как только модуль php5_cgi был отключен, fcgid снова смог обслуживать страницы PHP.
источник
У меня были похожие симптомы, еще одно решение: в /etc/apache2/mods-enabled/php5.conf в комментарии был полезный совет, которому я следовал:
источник
Если кто-то использует php7 в среде Linux
Убедитесь, что вы включили php7
Перезапустите службу mysql и Apache
источник
После обновления PHP до версии 7.3 скрипты PHP запускаются с www-данными вместо $ USER, как раньше.
Мне нужно было переустановить и активировать PHP-FPM:
sudo apt-get install php-fpm sudo a2enmod proxy_fcgi setenvif sudo service apache2 restart sudo a2enconf php7.3-fpm sudo service apache2 restart
Чтобы убедиться, что с Virtualmin все в порядке , я использовал мастер повторной проверки конфигурации в
/virtual-server/check.cgi
разделе Vitualmin / System Settings .После этого Apache / PHP загружал файлы php вместо их запуска. Поэтому мне нужно было отредактировать,
/etc/apache2/mods-available/php7.3.conf
чтобы прокомментировать строку,SetHandler application/x-httpd-php
как показано ниже:<FilesMatch ".+\.ph(ar|p|tml)$"> # SetHandler application/x-httpd-php </FilesMatch>
После перезапуска Apache моя проблема была решена, надеюсь, это поможет.
Позаботьтесь и о кеше браузера.
Моя система:
Ubuntu 16.04.6 LTS Webmin version 1.932 Usermin version 1.780 Virtualmin version 6.08 Apache version 2.4.41 PHP versions 7.3.12 PHP-FPM 7.3.12 Server
источник
Я потратил два дня, отслеживая это, и обнаружил, что помещаю свои PHP-скрипты не в тот каталог.
В моей стандартной установке Ubuntu я помещал скрипты в
/var/www
. Они должны были быть внутри/var/www/html
.Я только начал работу с PHP, поэтому не знаю, связано ли мое решение с изменением версии, через которое вы прошли.
источник
это решило проблему для меня (у меня установлен php7):
sudo apt-get установить libapache2-mod-php7.0
sudo service apache2 перезапуск
источник
У меня была такая проблема. Оказалось, что у меня были установлены и nginx, и apache, и они автоматически запускались при загрузке. Проблема заключалась в том, что nginx сначала привязывался к порту http, что препятствовало запуску apache.
источник
Также возможно, что у вас запущен nginx, но ваш php настроен для работы с apache. Чтобы проверить, запустите
service nginx status
иservice apache2 status
посмотрите, какой из них работает. В случае, если nginx запущен, а apache нет, просто запустите,sudo service nginx stop; sudo service apache2 start
и ваш сервер теперь будет обслуживать файлы php, как ожидалось.источник
Хорошо ... Я знаю, что на этот вопрос уже есть 1.000.000 ответов, - но я потратил не менее 6 эффективных часов на то, чтобы выяснить этот вопрос; и я гуглил сотни раз и не нашел ни одного сообщения об этом. Поэтому я решил, что добавлю здесь решение своей проблемы.
Вывод
Если бы я закомментировал эти две строки в своих .conf-файлах в
/etc/apache2/[[SERVER-NAME].conf
-file:php_admin_value engine Off IPCComTimeout 31
Я понятия не имею, что они делают и как они туда попали, но это есть в каждом из моих
.conf
файлов. И если я удалю эти строки и обеспечу наличие символической ссылки в/etc/apache2/sites-enabled/
папке , тогда он не загрузит index.php - и все будет работать так, как должно.Вся история
У меня VirtualMin установлен на Ubuntu 16.04 VPS. Я обновился до версии PHP 7.2. Вскоре после этого я обновил версию Ubuntu и обнаружил ошибку «Смещение ядра: отключено». Поэтому мне пришлось удалить последнюю версию Ubuntu, и когда моя ОС снова загрузилась: БУМ! Я получил ошибку, о которой говорится в его сообщении: для каждого сайта на моем VPS он просто загружал index.php вместо того, чтобы показывать его.
Я перепробовал все:
a2enmod [MODULE_NAME]
. И я нашел имя модуля в Google. Мне пришлось активировать около 6-8 модулей, прежде чем я прошел этот этап проверки - а потребовалось несколько минут до того, как закончился кеш, - так что это было утомительным шагом.источник
У меня была эта проблема, и если вы на самом деле никогда не играли с настройками конфигурации вашего сервера, то ваша проблема на 90% в вашем файле .htaccess
Вы либо изменяете файл .htaccess ЛОКАЛЬНО, либо удаляете его (ЛОКАЛЬНО)
источник
У меня была проблема, аналогичная OP, при обновлении php5 со старой версии до 5.5.9, которая является версией, установленной с Mint 17.
Я запускаю установку LAMP на машине в моей локальной сети, которую я использую для предварительного просмотра изменений на веб-сайтах, прежде чем загружать эти изменения на реальный действующий сервер. Так что я поддерживаю идеальное локальное зеркало фактического сайта.
После обновления файлы, которые отлично работают и отображаются на реальном сайте, не будут отображаться или будут отображать только html на локальном компьютере. PHP не разбирался. Команда phpinfo () работала, поэтому я знал, что в остальном php работает. Журнал не выдал ошибок. Просмотр исходного кода страницы показал мне актуальный php-код.
Я создал страницу test.php, содержащую следующий код:
<?php phpinfo(); ?>
Это сработало. Потом я обнаружил , когда я изменил
<?php
в<?
команде больше не работал. Все мои сайты php используют<?
вместо этого,<?php
возможно, это не идеально, но это реальность. Я исправил проблему, перейдя в / etc / php5 / apache2, выполнив поиск «short_open_tag» и изменив значение с Off на On.источник
Если ничего из вышеперечисленного не работает,
попробуйте закомментировать строку
и перезапустите apache, используя
Он должен работать!
источник
PHP56
vim /etc/httpd/conf/httpd.conf
источник
У меня такая проблема. Вот как я это решаю. После установки Apache я установил PHP с помощью этой команды.
он выполняется правильно, но я запрашиваю файл .php у Apache, он дает без выполнения сценария PHP .
Затем я проверяю, включен ли PHP.
$ cd /etc/apache2 $ ls -l mods-*/*php*
но никаких результатов не дало. Проверяю установленные пакеты PHP.
$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
На моем компьютере установлены разные версии PHP . Затем я удаляю несколько пакетов PHP из моего предыдущего списка, используя apt-get purge .
sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
Я переустанавливаю PHP
Убедитесь, что модуль PHP загружен
$ a2query -m php7.0
если не включен:
$ sudo a2enmod php7.0
Перезагрузите сервер Apache
Наконец, я проверяю процесс PHP на Apache
создать пустой файл
sudo vim /var/www/html/info.php
Добавьте этот контент в info.php и сохраните.
<?php phpinfo(); ?>
Проверьте в браузере:
показывает правильно. Думаю, это кому-нибудь поможет.
источник
Если у вас есть virtualmin, попробуйте закомментировать эти строки в конфигурации apache в / etc / apache2 / sites-available
#RemoveHandler .php #RemoveHandler .php7.0 #php_admin_value engine Off
источник
Когда я обновился с PHP 7.2 до PHP 7.4, у меня также возникла такая же проблема. Работал следующим образом: -
In
[domain].conf file
прокомментировал следующее:php_admin_value двигатель выключен
И добавил:
Отключите мод 7.2 и включите 7.4 следующим образом:
a2dismod php7.2
a2enmod php7.4
В
/etc/apache2/mods-enabled/php7.4.conf
файле комментарий следующий:Приложение SetHandler / x-httpd-php
php_admin_flag Engine Off
источник
Для людей, которые нашли этот пост от Google почти на 6 лет в будущем (и позже!), Вы можете столкнуться с этой проблемой с Apache 2 и PHP 7, также используя
UserDir
модуль.Другой возможной причиной этой проблемы может быть то, что вы пытаетесь запустить сценарий в «пользовательском каталоге» из
UserDir
модуля. По умолчанию выполнение сценариев PHP в пользовательских каталогах отключено. Вы столкнетесь с этой проблемой, если скрипт находится вpublic_html
каталоге в вашей домашней папке, и вы пытаетесь получить к нему доступ изhttp://localhost/~your_username
.Чтобы исправить это, откройте
/etc/apache2/mods-enabled/php7.2.conf
. Вы должны прокомментировать или удалить блок тегов внизу, который гласит<IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine Off </Directory> </IfModule>
источник
У меня была такая же проблема после использования
zypper rm php*
для удаления PHP и его повторной установки с помощьюzypper in php7 php7-gd php7-gettext php7-mbstring php7-mysql php7-pear
Я решил это, включив модуль apache2 и перезапустив веб-сервер:
источник
Если в вашем .htaccess есть что-то подобное
источник