браузер загружает php-файл с веб-сервера apache

У меня есть веб-сервер Apache. Допустим, что домен этого сервера – example.com .

Когда я обращаюсь к example.com , файл index.php корректно отображается в браузере.

Однако, когда я обращаюсь к example.com/~user , тогда файл index.php файла /home/user/public_html/index.php загружается, а не отображается.

Как исправить эту проблему? Я изменил "expose_php = Off" в php.ini , но ничего не изменилось.

Если вы находитесь в Debian / Ubuntu, посмотрите этот файл /etc/apache2/mods-available/php5.conf

моя выглядит так, и вы можете видеть, что мне пришлось прокомментировать некоторую строку, чтобы заставить PHP работать в пользовательском каталоге

 <IfModule mod_php5.c> <FilesMatch "\.ph(p3?|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> # 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. #<IfModule mod_userdir.c> # <Directory /home/*/public_html> # php_admin_value engine Off # </Directory> #</IfModule> </IfModule> 

Обратите внимание, что после редактирования файла вам придется перезапустить apache, чтобы изменения вступили в силу, команда перезапуска apache в системе на основе debian: /etc/init.d/apache2 restart

Надеюсь, это избавит кого-то еще от головной боли. Я знаю, что этот вопрос старый, но он все еще возникает при поиске этой проблемы.

Я не уверен, что это работает во всех установках apache2, но я запускаю apache2 на ubuntu и проблема с загрузкой файлов в веб-браузере вместо отображения правильного индексного файла.

Проблема заключается в файле /etc/apache2/mods-enabled/dir.conf. Установленный по умолчанию параметр документа был переопределен тем, что я установил в /etc/apache2/httpd.conf

Поэтому просто откройте файл /etc/apache2/mods-enabled/dir.conf и измените порядок перечисленных файлов.

🙂

У меня был подобный опыт – некоторые php-файлы работают нормально, но другие, похоже, загружают загруженный PHP-код.

В моем случае это произошло из-за разбитых файлов, используя формат коротких тегов <? и?>. Это не рекомендуется, и вы можете найти, что у php.ini по умолчанию эта поддержка отключена. При поддержке поддержка php-кода отправляется в браузер, как если бы он был HTML.

Если вы не можете избежать коротких тегов (как в моем случае – целой старой кодовой базы с использованием коротких тегов), вы можете установить ее в php.ini:

 short_open_tag = On