У меня есть веб-сервер 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