PHP перестал работать на Apache после обновления до OS x 10.10.1 Yosemite - сломался Owncloud

Контекст: я пытаюсь запустить Apache на своем локальном Mac27» (2009 г.), чтобы использовать OwnCloud в качестве альтернативы iCloud от Apple (я просто хочу выполнить локальную синхронизацию своего календаря, как в старой доброй «OS X big кошачьи дни. Из параноидальных соображений конфиденциальности я не хочу, чтобы Купертино знал, кого я знаю или чем я занимаюсь - возможно, неуместно, но вот так). Мой набег на это был основан на сообщении в блоге Майкла Грейси на http://michaelgracie.com/2013/11/13/getting-ios-7-calendar-and-contacts-syncing-directly-with-os-x-10-9-mavericks/ ( за что большое спасибо).

Когда я обновился до Yosemite несколько недель назад (напомните мне, почему я это сделал?), я провел целую вечность, исправляя свою очень простую настройку, и я вернулся. Вчера я обновился (опять же, напомните, зачем я это сделал?) до 10.10.1, и он снова сломался. Вроде бы все должно работать, но PHP не работает.

Симптом заключается в том, что когда я запускаю OwnCloud (localhost/owncloud/index.htm), я получаю логотип и стиль OwnCloud, а затем ошибку:

PHP module GD is not installed.
Please ask your server administrator to install the module.

Это, однако, отвлечение, потому что проблема не в модуле GD - я думаю, что Apache вообще не видит PHP. Причина в следующем:

1) Работает ли PHP на Apache?

Когда я иду в:

http://localhost

Я вижу Apache "Это работает!" сообщение.

Адаптация файла index.html.en в /Library/Webserver/documents/ позволяет мне изменить это сообщение, однако, когда я вызываю PHP из этого файла, например.

    <h1>It works!</h1>
    <h2>This file is in /Library/Webserver/Documents</h2>
    <h3>Trying to printout phpinfo()</h3>
    <?php
            echo phpinfo();
    ?>

Затем я вижу три строки текста, но никакой информации о PHP.

Таким образом, PHP недоступен при рендеринге этой веб-страницы.

2) Доступен ли вообще PHP?

Исследуя это, я запускаю следующую команду из терминала:

sudo echo <?php phpinfo() ?> | php

и я получаю четыре тысячи строк информации о PHP, включая

'--with-gd'

в команде настройки.

3) Загрузил ли Apache модуль PHP?

Затем я запускаю:

httpd -t -D DUMP_MODULES

Apache говорит мне, что среди многих других модулей он использует:

php5_module (shared)

4) Совместим ли файл httpd.conf с этим:

Я просмотрел httpd.conf в своем каталоге /etc/apache2 и раскомментировал следующие строки:

LoadModule php5_module        libexec/apache2/libphp5.so
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

5) Что еще?

Просто для полноты картины в моем файле /etc/apache2/users я настроил свои собственные пользовательские настройки так:

<Directory "/Users/DJBrown/Sites/">
    Options Indexes MultiViews FollowSymLinks
    Require all granted
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

(Признаюсь, в этот момент, как и в других, я действительно не совсем уверен, что делаю, поскольку многое из этого я проследил из некоторых других ответов в StackOverflow).

6) Заключение

Apache работает с загруженным PHP, и как httpd, так и PHP могут быть опрошены из командной строки... но Apache не будет запускать PHP.

Это возможно?

Что я пропустил?

Любая помощь принята с благодарностью.

DJ


person doctordjbrown    schedule 20.11.2014    source источник
comment
предположение: *.html.en обычно не связано с php-интерпретатором, попробуйте test.php с phpinfo()   -  person birdspider    schedule 20.11.2014
comment
Спасибо за предложение. Я попробовал это как testphp.html (test.php не загружается в Safari). Поведение остается неизменным независимо от имени файла.   -  person doctordjbrown    schedule 20.11.2014
comment
apache не будет выполнять какой-либо php в файлах, отличных от *.php - вы должны сначала исправить это - проблема test.php won't load into Safari   -  person birdspider    schedule 20.11.2014
comment
Большой. Это полезно. Любые идеи, как убедить сафари загрузить файл php? Я никогда раньше не визуализировал PHP напрямую в браузере, вне контекста HTML-файла.   -  person doctordjbrown    schedule 20.11.2014
comment
Извиняюсь! Я идиот. Файл INFO.PHP загружается в сафари через Localhost, а не просто просит приложение отобразить его. (неоднократно хлопает по лбу).   -  person doctordjbrown    schedule 20.11.2014
comment
Я работал над частичным решением   -  person doctordjbrown    schedule 20.11.2014


Ответы (1)


Вот частичный ответ.

Изменение строки в httpd.conf

AddType application/x-httpd-php .php

to

AddType application/x-httpd-php .php .htm .html

Разрешает Apache отображать встроенный PHP-код в HTML-файлах.

(Я получил это от http://php.about.com/od/advancedphp/p/html_php.htm)

У меня все еще есть проблема с OwnCloud, о которой я расскажу на их форуме.

Спасибо за помощь

DJ

person doctordjbrown    schedule 20.11.2014
comment
Спасибо! Эта строка исправила мой Apache PHP. Я боролся с этим. Установил Homebrew PHP, все равно не работает. Сейчас все нормально. - person Asle; 16.07.2015