PHP-код отображается в браузере как обычный текст и не обрабатывается

Я новичок как в PHP, так и в разработке на Mac OS X.

У меня есть следующий код на интерфейсе (браузер на моем ноутбуке):

$('form').on('submit', function(e) {
    $.post( 'save.php', $(this).serialize(), function(response) {
        console.log( response );
    });

    e.preventDefault();
});

И этот простой PHP-код на серверной части (сервер Apache на моем ноутбуке):

<?php

$f = $_POST['content']); //content is coming from a form textarea

echo $f;

Я ожидаю, что все, что я отправляю, будет отражено на консоли (с помощью PHP). Вместо этого происходит то, что я получаю весь PHP-код в консоли. Насколько я понимаю, сервер не выполняет PHP-код, а вместо этого возвращает его в виде обычного текста.

Я искал вокруг в течение трех часов и сделал следующее:

  1. (Пере)установил MAMP.
  2. Убедитесь, что сервер Apache действительно работает
  3. Убедился, что я захожу на сайт через Apache, а не открываю его как файл в браузере. Я делаю /localhost/~username/index.html
  4. Проверено, содержит ли httpd.conf эту строку, и она есть:

    LoadModule php5_module modules/libphp5.so

  5. Добавил это в httpd.conf и перезапустил сервер Apache:

    Приложение AddType/x-httpd-php .php

Затем я начал читать документацию по PHP и нашел это, в котором описывается проблема, с которой я столкнулся, и ее решение. Проблема в том, что, в отличие от libphp5.so, у меня нет файла mod_php.so или lib_perl.so в папке модулей. Я также искал их в Spotlight, и он ничего не вернул.

Итак... что еще мне нужно сделать/проверить? Заранее спасибо.


person Ege Ersoz    schedule 25.12.2013    source источник
comment
Вопросы по настройке сервера лучше задавать на serverfault.com, SO — на вопросы по программированию.   -  person Barmar    schedule 26.12.2013
comment
1. В вашем php-файле нет закрывающего тега ?> 2. Вы установили PHP на свой сервер? что происходит, когда вы создаете index.php в корневом каталоге apache с помощью простого echo? с phpinfo()   -  person Nir Alfasi    schedule 26.12.2013
comment
PHP обычно не анализирует файлы .html. Измените файл на .php и посмотрите, работает ли это.   -  person Sverri M. Olsen    schedule 26.12.2013
comment
Закрывающий тег не имеет значения. Это не требуется во всем файле PHP. Сохраняете ли вы эти файлы в правильном каталоге в соответствии с конфигурацией вашего виртуального хоста?   -  person SomeShinyObject    schedule 26.12.2013
comment
@alfasin Закрывающие теги на самом деле не рекомендуются, потому что завершающий пробел после закрывающего тега пройдет.   -  person poke    schedule 26.12.2013
comment
Итак, вы обращаетесь к файлу следующим образом: http://localhost:8888/~username/save.php. Я думаю, что порт 8888 - это MAMP по умолчанию. Опубликуйте свой точный URL   -  person Jompper    schedule 26.12.2013


Ответы (1)


Хорошо, я понял это. Я считаю, что проблема возникла из-за моего собственного непонимания OS X в целом и Apache/MAMP в частности (я новичок в обоих!). В частности, я не понимал, что OS X запускает свой собственный сервер Apache, и что когда вы устанавливаете MAMP, он, по сути, дает вам альтернативную установку (я думаю?). Я понял это, когда попытался запустить Apache из терминала, используя «sudo apachectl -k start», и он сказал, что процесс уже запущен. Затем я немного погуглил и понял, почему.

Затем я реализовал решение. Раньше у меня все было в User\Sites, и я возвращал PHP-скрипт в обычный текст. Я переместил свои файлы в Applications/MAMP/htdocs. Затем я запустил MAMP PRO, который показал, что Apache работает на порту 8888. Поэтому я перешел на localhost:8888/~username/ и отправил форму, PHP-скрипт был обработан правильно, и я получил ответное эхо.

Кто-нибудь, поправьте меня, если мое понимание неверно. Но, по крайней мере, мой маленький проект теперь работает. :)

person Ege Ersoz    schedule 26.12.2013
comment
Кажется, это правильно. Отметьте это как ответ, чтобы другие с такой же проблемой увидели это первыми. - person Jompper; 26.12.2013
comment
Да, я буду. Прямо сейчас он говорит мне, что мне нужно подождать 2 дня, прежде чем я смогу принять свой собственный ответ. - person Ege Ersoz; 26.12.2013
comment
Ой ладно, извини не знал. Рад, что проблема решилась. Счастливых праздников - person Jompper; 26.12.2013