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

Что заставляет страницы PHP загружаться постоянно, а не нормально работать

Я запускаю сервер Ubuntu на виртуальной машине, чтобы протестировать различные решения для веб-форумов. Я настроил ~ / public_html / для доступа с веб-сервера apache2, и он отлично работает.

Однако, когда я перехожу к файлу .php в браузере (используя ip-адрес моей виртуальной машины / ~ имя пользователя / phpfile.php), он не отображает его должным образом. Вместо этого предлагает сохранить в файл / спрашивает, с помощью какой программы его открыть. Интересно, что это диалоговое окно распознает, что это файл php.


У меня в системе установлена ​​следующая версия php:

PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

И следующий сервер:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Nov 18 2010 21:19:09


Если кто-нибудь знает, что может вызвать это / потенциальное решение, я буду очень счастлив :)

РЕДАКТИРОВАТЬ: Оказывается, в файлах такое поведение проявляется только в файлах в каталоге ~ / public_html /. Все файлы php в / var / www / работают нормально.

Призы достаются тому, кто объяснит почему? : D (И под призами я просто имею в виду молодец, боюсь, никаких настоящих призов.)

У вас может быть установлена ​​только cli-версия PHP.

sudo apt-get install php5

и перезапустите apache

sudo apache2ctl restart.

Вы также можете проверить, что модуль PHP загружен в apache, выполнив

sudo apache2ctl -M

Что, если модуль загружен, он должен показать что-то вроде

Loaded Modules:
 ...
 php5_module (shared)
 ...
Syntax OK

добавьте это в свою конфигурацию apache

AddType application/x-httpd-php .php 

На самом деле у меня была такая же проблема в пользовательском каталоге public_html, и я обнаружил, что в файле /etc/apache2/mods-available/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.

Я сделал то, что он сказал, и перезапустил apache, и проблема исчезла.

Вам необходимо настроить apache так, чтобы он запускал интерпретатор php при запросе файла .php вместо того, чтобы просто возвращать содержимое файла.

Это необходимо сделать в httpd.conf для рассматриваемого каталога. Это выглядело бы примерно так:

# Use for PHP 5.x:
LoadModule php5_module        modules/libphp5.so
AddHandler php5-script php 

# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php

AddType text/html       php

Проверьте .htaccess для строки AddType. У меня был собственный AddType, который вызывал плохой тип содержимого. Firefox помог мне отладить проблему, но вы также можете использовать wget.

Легко забыть, но обычно это происходит, когда забывают открывать и закрывать <?php ?> теги.

У меня недавно возникла эта проблема, и после устранения всех других причин в этой теме я обнаружил, что mod_php5 расширение (в моей системе по адресу /usr/lib64/apache2/mod_php5.so ) был без выполнения перестановок.

После chmoding все заработало.