Я пытаюсь установить Mediawiki 1.22.6 в подкаталог /wiki/
корневого каталога документов Apache, который содержит некоторые другие каталоги. Когда я пытаюсь открытьhttp://example.com/wikiилиhttp://example.com/wiki/index.phpв самый первый раз для генерации LocalSettings.php скрипт не запускается; вместо этогочастьиз него напечатано:
bar() и т. д. и т. п.), которые вызывают ошибки синтаксического анализа в # PHP 4. Setup.php и ObjectCache.php имеют структуры, недопустимые в PHP 5.0 и # 5.1 соответственно. if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.3.2' ) < 0 ) { // Нам нужно использовать dirname(ФАЙЛ) здесь причинаДИРPHP5.3+ требует имя_каталога(ФАЙЛ) . '/includes/PHPVersionError.php'; wfPHPVersionError( 'index.php' ); } # Инициализируем общий код. Это дает нам доступ к GlobalFunctions, # AutoLoader и глобальным переменным $wgRequest, $wgOut, $wgUser, $wgLang и # $wgContLang, среди прочих; этонетзагрузка $wgTitle требуетсяДИР. '/includes/WebStart.php'; $mediaWiki = новый MediaWiki(); $mediaWiki->run();
Запуск скрипта php -f index.php
дает ожидаемый результат.
Нет никаких псевдонимов или правил перезаписи; mod_php, похоже, включен — Mediawiki работает, если установлен как document root. В текущей установке document root — это символическая ссылка.
Виртуальный хост настроен следующим образом:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/hell/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/hell/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
IndexOptions +ShowForbidden
</Directory>
<Directory /home/hell/public_html/private>
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/hell/apasswords
Require user satan
</Directory>
# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
# </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Поэтому для Mediawiki нет специальной конфигурации.
решение1
Минимальная версия PHP, необходимая для Mediawiki 1.22.6
. 5.3.2
Вы не показываете полный вывод в своем вопросе, но похоже, что сообщение, которое вы получаете, на самом деле является содержимым главного индексного файла Mediawiki. Самое простое объяснение — у вас нет обработчика Apache (например AddHandler
) настроен на правильную обработку .php
файлов, поэтому index.php
файл обрабатывается как текст.
Даже если PHP включен (обычно с помощью директивы конфигурации, например, LoadModule php5_module libexec/apache2/libphp5.so
в вашей основной папке httpd.conf
, или включен каким-либо образом из отдельного файла или каталога), вам все равно может потребоваться включить его внутри вашего VirtualHost
контейнера с помощью директивы, например:
AddHandler application/x-httpd-php .php
Поскольку обслуживать файлы с помощью PHP безопаснее .php
(мы не хотим, чтобы их содержимое было доступно для чтения, если оно включает информацию, которая не должна быть общедоступной), обработчик .php
файлов должен быть включен для всего сервера. Если вы обслуживаете файлы PHP с помощью процесса CGI
или , FCGI
могут потребоваться дополнительные шаги по настройке.
Более сложное объяснение
У вас может быть установлено несколько версий PHP. Возможно, ваша версия mod_php
была скомпилирована с использованием более старой версии библиотек PHP, тогда как версия командной строки (иногда устанавливаемая отдельно через пакет типа php-cli
) связана с более новым набором библиотек и, таким образом, работает правильно.
Найдите библиотеки, связанные с mod_php (замените команды вашего инструмента управления пакетами соответствующим образом):
% pkg info -a | grep mod_php
mod_php5-5.4.28,1 PHP Scripting Language
% pkg info -l mod_php5-5.4.28,1
mod_php5-5.4.28,1:
/usr/local/libexec/apache24/libphp5.so
/usr/local/share/licenses/mod_php5-5.4.28,1/LICENSE
/usr/local/share/licenses/mod_php5-5.4.28,1/PHP301
/usr/local/share/licenses/mod_php5-5.4.28,1/catalog.mk
или
% locate libphp5.so
/usr/local/libexec/apache24/libphp5.so
% pkg which /usr/local/libexec/apache24/libphp5.so
Если вы уверены, что версия PHP, которую вы установили, правильная, и ваш сервер настроен на .php
правильную работу, но у вас все еще возникают проблемы, то следующим шагом будет отладка с использованием уровней отладки Apache и файлов журналов.
решение2
Видимо, когда включен userdir, php отключается для /home/*/public_html
каталогов. Переименование public_html
во что-то другое помогло.