미디어위키가 처음으로 실행되지 않습니다

미디어위키가 처음으로 실행되지 않습니다

/wiki/저는 Mediawiki 1.22.6을 다른 디렉토리가 포함된 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+에는 dirname이 필요합니다(파일) . '/includes/PHPVersionError.php'; wfPHPVersionError( 'index.php' ); } # 공통 코드를 초기화합니다. 이를 통해 우리는 GlobalFunctions, # AutoLoader 및 전역 $wgRequest, $wgOut, $wgUser, $wgLang 및 # $wgContLang에 액세스할 수 있습니다. 그렇습니다~ 아니다$wgTitle 요구 로드디렉터리. '/includes/WebStart.php'; $mediaWiki = 새로운 미디어위키(); $mediaWiki->실행();

스크립트를 실행하면 php -f index.php예상되는 출력이 생성됩니다.

별칭이나 다시 쓰기 규칙이 없습니다. mod_php가 활성화된 것 같습니다 — 문서 루트로 설치하면 미디어위키가 작동합니다. 현재 설치에서 문서 루트는 심볼릭 링크입니다.

가상호스트는 다음과 같이 구성됩니다.

<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>

따라서 미디어위키에는 특별한 구성이 없습니다.

답변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내에서 PHP를 활성화해야 할 수도 있습니다 .VirtualHost

AddHandler application/x-httpd-php .php

PHP를 사용하여 파일을 제공하는 것이 더 안전하기 때문에 .php(공개되어서는 안되는 정보가 포함된 경우 내용을 읽을 수 없도록 하고 싶습니다) .php전체 서버에 대해 파일 처리기를 활성화해야 합니다. CGI또는 프로세스를 사용하여 PHP 파일을 제공하는 경우 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이 활성화되면 /home/*/public_html디렉토리에 대해 PHP가 비활성화됩니다. public_html다른 이름으로 이름을 바꾸는 것이 도움이 되었습니다.

관련 정보