Назад | Перейти на главную страницу

Mediawiki запускается не впервые

Я пытаюсь установить 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 ( ФАЙЛ ) здесь причина DIR PHP5.3 + требуется имя каталога ( ФАЙЛ ). '/includes/PHPVersionError.php'; wfPHPVersionError ('index.php'); } # Инициализировать общий код. Это дает нам доступ к GlobalFunctions, # AutoLoader и глобальным переменным $ wgRequest, $ wgOut, $ wgUser, $ wgLang и # $ wgContLang, среди прочего; оно делает не load $ wgTitle требуется DIR . '/includes/WebStart.php'; $ mediaWiki = новый MediaWiki (); $ mediaWiki-> запустить ();

Запуск скрипта с php -f index.php производит ожидаемый результат.

Нет никаких псевдонимов или правил перезаписи; Похоже, что mod_php включен - Mediawiki работает, если установлена ​​как корень документа. В текущей установке корень документа является символической ссылкой.

Виртуальный хост настраивается следующим образом:

<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 нет специальной конфигурации.

Видимо, когда userdir включен, php отключен для /home/*/public_html каталоги. Переименование public_html еще кое-что помогло.

Минимальная версия 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 и файлов журнала.