Apache загружает php-код вместо того, чтобы выполнять его в aws-сервере (веб-приложения laravel) [дублировать]

Итак ... Почему потерять полученную информацию плохо? ... потому что автор производного класса, возможно, изменил представление таким образом, что отсечение дополнительной информации изменяет значение, представляемое объектом. Это может произойти, если производный класс, если используется для кэширования представления, более эффективного для определенных операций, но дорогого для преобразования обратно в базовое представление.

Также подумал, что кто-то должен также упомянуть, что вам следует делать, чтобы избежать нарезка ... Получите копию стандартов кодирования C ++, 101 правила и рекомендации.

Он предлагает несколько сложный шаблон, чтобы полностью решить проблему: иметь защищенный экземпляр копии, защищенный чистый виртуальный DoClone и публичный клон с утверждением, которое скажет вам если (далее) производный класс не смог правильно выполнить DoClone. (Метод Clone делает правильную глубокую копию полиморфного объекта.)

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

75
задан Anthony Gainor 26 August 2013 в 09:23
поделиться

20 ответов

Правильный AddType для php - application / x-httpd-php

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

Также убедитесь, что ваш php-модуль загружен

LoadModule php5_module        modules/mod_php55.so

Когда вы настраиваете apache затем попытайтесь просмотреть страницу с помощью другого браузера. - у меня были дни, когда хром упорно кэширует результат и сохраняет загрузку исходного кода в то время как в другом браузере, это просто прекрасно

65
ответ дан Mihkel 21 August 2018 в 19:22
поделиться

Если ни одно из вышеприведенных действий не работает,

попробуйте прокомментировать строку

SetHandler ....

и перезапустить apache с помощью

/etc/init.d/httpd restart

Это должно сработать!

0
ответ дан Cosmo Arun 21 August 2018 в 19:22
поделиться

У меня ранее была аналогичная проблема после обновления с 5.3 до 5.4. Но моя настройка выглядит немного по-другому, так как я запускаю Debian и использую fcgid для сервера PHP-страниц, а не модуль PHP5 apache / cgi. Поэтому после того, как я обновил его, он также установил php5_cgi, который столкнулся с моей установкой fcgid и больше не будет выполнять файлы PHP.

Мне пришлось отключить модуль Apache и перезапустить Apache

a2dismod php5_cgi
/etc/init.d/apache2 restart

После того, как модуль php5_cgi был в стороне, fcgid снова смог обслуживать страницы PHP.

2
ответ дан derchris 21 August 2018 в 19:22
поделиться
  • 1
    Да, этот сложный cgi bastard ^^ Решил мою проблему после обновления php с 5.3 до 5.4 тоже из dotdeb. – Emii Khaos 14 February 2014 в 10:53

У меня была эта проблема. Оказалось, что у меня установлены как nginx, так и apache и автоматически запускаются при загрузке. Проблема заключалась в том, что nginx связывался с первым портом http, из-за которого apache не запускался.

1
ответ дан dshepherd 21 August 2018 в 19:22
поделиться

Также возможно, что у вас запущен nginx, но ваш php настроен для работы с apache. Чтобы проверить, запустите service nginx status и service apache2 status, чтобы увидеть, что работает. В случае, когда nginx запущен, а apache - нет, просто запустите sudo service nginx stop; sudo service apache2 start, и ваш сервер теперь будет обслуживать php-файлы, как ожидалось.

0
ответ дан hexicle 21 August 2018 в 19:22
поделиться

У меня такая проблема. Вот как я его решаю. После установки Apache я установил PHP с помощью этой команды.

sudo apt-get install php libapache2-mod-php

он выполняется правильно, но я запрашиваю файл .php из Apache, он дает без выполнения PHP-скрипта.

Тогда я check 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

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Убедитесь, что модуль PHP загружен

$ a2query -m php7.0

, если не включено:

$ sudo a2enmod php7.0

Перезапустить сервер Apache

$ sudo systemctl restart apache2

Наконец, я проверяю процесс PHP на Apache

создать пустой файл

sudo vim /var/www/html/info.php

Добавить этот контент в info.php & amp; save

<?php
  phpinfo();
?>

Проверить браузер:

http: //localhost/info.php

он показывает правильно. Я думаю, что это поможет кому угодно.

0
ответ дан Janaka Pushpakumara 21 August 2018 в 19:22
поделиться

Я провел два дня, отслеживая это, и выяснил, что я помещал свои PHP-скрипты в неправильный каталог.

В моей стандартной установке Ubuntu я помещал скрипты в /var/www. Они должны были быть в /var/www/html.

Я только что начал работу с PHP, поэтому не знаю, связано ли мое решение с изменением версии.

1
ответ дан Jeffrey Bosboom 21 August 2018 в 19:22
поделиться

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

Если у вас есть что-то вроде

AddHandler x-mapp-php6 .php3 .php4 .php .phtml

в файле .htaccess папки вашего веб-содержимого, это может привести к тому, что ваши скрипты PHP перестанут работать , В моем случае сервер не знал тип x-mapp-php6, так как этот файл .htaccess был чем-то импортированным с другого веб-хоста, когда я передал содержимое веб-сайта.

Просто удалив строку AddHandler из файла .htaccess решил это для меня.

14
ответ дан kaiser 21 August 2018 в 19:22
поделиться
  • 1
    Отлично. В моем случае это было AddHandler application/x-httpd-php54 .php54 .php, которое нужно было удалить. – Old McStopher 23 June 2014 в 04:50
  • 2
    У меня возникла какая-то проблема, но я нашел файл -htaccess виновника в домашнем каталоге (в одном каталоге выше «public_html» веб-каталога). Если у кого-то еще есть такая же проблема, ищите .htaccess в родительских каталогах (каскад настроек). – Wireblue 29 July 2014 в 01:11
  • 3
    У меня был такой файл .htaccess, который я вытащил с сервера веб-хостинга. Это заставило версию PHP, которая не была установлена ​​на моей локальной машине. Таким образом, виртуальный хост не выполнял файл PHP должным образом. – BrightIntelDusk 10 October 2014 в 17:59
  • 4
    Это почти наверняка проблема, если некоторые сайты работают, а другие нет. Joomla .htaccess содержит AddHandler, но WordPress этого не сделал. – Peter Wooster 4 December 2015 в 13:08
  • 5
    Обратите внимание, что это работает только под Linux (и, в частности, с Debian Linux). – Gwyneth Llewelyn 1 March 2017 в 18:13

У меня такая же проблема. Apache не загружает php-файлы с определенного веб-сайта, просто скачал его. Я прочитал этот пост и ответы, и я видел, что у меня есть эта строка в последнем месте файла .htaccess:

AddHandler x-mapp-php5.5  .php

Я прокомментировал это, и все работает нормально.

Спасибо всем !!!

3
ответ дан Ladislao Garcia 21 August 2018 в 19:22
поделиться

это решило проблему для меня (у меня установлен php7):

sudo apt-get install libapache2-mod-php7.0

sudo service apache2 restart

1
ответ дан Marouen Mhiri 21 August 2018 в 19:22
поделиться

Если кто-то использует php7 в среде Linux

Убедитесь, что вы включили php7

sudo a2enmod php7

Перезапустите службу mysql и Apache

sudo systemctl restart mysql
sudo systemctl restart apache2
0
ответ дан MedoAlmasry 21 August 2018 в 19:22
поделиться

Это может происходить из-за недостающих модулей, необходимых для вашего php. Предполагая, что у вас установлен php7, найдите доступные модули php7, используя

sudo apt-cache search php7-*

. Команда Above отобразит все доступные модули PHP7 для установки. Вы можете начать установку модулей, таких как

sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
5
ответ дан Noushad PP 21 August 2018 в 19:22
поделиться

У меня были похожие симптомы, но еще одно решение: в файле /etc/apache2/mods-enabled/php5.conf в комментарии был полезный совет, который я использовал:

# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
1
ответ дан qbolec 21 August 2018 в 19:22
поделиться

PHP56

vim /etc/httpd/conf/httpd.conf

LoadModule php5_module        libexec/apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
0
ответ дан Roberto Carlos Reyes Fernandez 21 August 2018 в 19:22
поделиться

Пожалуйста, взгляните на свои директивы addtype.

Мне кажется, что Apache сообщает браузеру, что он отправляет тип документа application / php для скриптов с расширениями, например .php5. На самом деле Apache должен сообщить браузеру, что сценарий выводит текст / html.

Пожалуйста, попробуйте следующее:

AddType text/html .php

Что касается вышеприведенного предложения, вы должны сообщить браузеру, что вы выводите скрипт 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
5
ответ дан Sam Azer 21 August 2018 в 19:22
поделиться
  • 1
    Это интересно, но в моем случае он просто выводит весь PHP-скрипт, на этот раз отформатированный как HTML (в отличие от форматирования только с ASCII) - не полезно! Проблема здесь в том, что PHP некорректно запущен, или отправляются неправильные заголовки ... – Gwyneth Llewelyn 1 March 2017 в 18:12
  • 2
    Обратите внимание на последнюю директиву AddType (которая закомментирована в приведенном выше примере) приводит к тому, что файл .phps будет довольно напечатан в HTML. Возможно ли, что ваша конфигурация Apache - довольно-печатные .php-файлы? – Sam Azer 4 March 2017 в 00:54

У меня была аналогичная проблема с 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» и изменив значение с «Выкл.» На «Вкл.».

0
ответ дан Slip 21 August 2018 в 19:22
поделиться

Если ваш .htaccess имеет что-то подобное

AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm
-1
ответ дан Tom 21 August 2018 в 19:22
поделиться

Если у вашего .htaccess есть что-то вроде этого ... AddHandler application / x-httpd-php53 .php .php5 .php4 .php3, то прокомментируйте его и повторите попытку обновления, это сработало для меня ...

2
ответ дан user252566 21 August 2018 в 19:22
поделиться

Хорошо ... Я знаю, что на эти вопросы уже есть 1.000.000 ответов, но я потратил не менее 6 эффективных часов, выяснив это; и я искал его сотни раз и не нашел ни одной записи об этом. Поэтому я подумал, что добавлю решение своей проблемы здесь.

Вывод

Если я прокомментировал эти две строки в моих .conf-файлах в файле /etc/apache2/[[SERVER-NAME].conf:

php_admin_value engine Off
IPCComTimeout 31

, у меня нет идеи, что они делают или как они туда попали, - но он находится в каждом из моих .conf -файлов. И если я удалю эти строки и , убедитесь, что в /etc/apache2/sites-enabled/ -палочке есть символическая ссылка , тогда она не загружает index.php - и все работает так, как должно.

Вся история

У меня VirtualMin установлен на Ubuntu 16.04 VPS. Я обновился до версии PHP 7.2. Вскоре после этого я обновил версию Ubuntu и ударил ошибку «Смещение ядра: отключено». Поэтому мне пришлось удалить последнюю версию Ubuntu, и когда моя ОС снова загрузится: BOOM! Я получил ошибку, о которой говорит его пост: для каждого сайта на моем VPS он просто загружал index.php, а не показывал его.

Я пробовал всевозможные вещи:

  • Удалил PHP7.2 и установил PHP5.6 (теперь я знаю, что PHP-версия не имеет к этому никакого отношения; это конфигурация apache, которая нуждается в работе).
  • Пробовал включать и отключать модули apache, на существующей установке, но без везения.
  • Затем I полностью удалил apache и установил его снова, после чего проблема была еще там!
  • Пробовал играть с настройкой Virutal Server в VirtualMin (Webmin >> Servers >> Apache Webserver).
  • Проверьте конфигурацию на одном виртуальном сервере (Virtualmin >> System Settings >> Re-Check Configuration) ... Этот шаг был довольно приятным, поскольку он сообщил, что модуль в Apache отсутствует; после чего я мог включить его с помощью a2enmod [MODULE_NAME]. И я нашел имя модуля Googling. Мне пришлось активировать около 6-8 модулей, прежде чем я прошел этот этап проверки - и потребовалось несколько минут до того, как закончился кеш, - так что это был утомительный шаг.
  • И наконец, я понял вышеприведенное заключение - вместе с символическими ссылками, - и затем я получил его на работу. Я должен был пройти через это для каждого сайта на моем VPS.
0
ответ дан Zeth 21 August 2018 в 19:22
поделиться
15
ответ дан kaiser 4 November 2018 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: