Я запускаю сервер 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 все заработало.