Apache VirtualHosting 환경에서 PHP가 작동하도록 할 수 없습니다

Apache VirtualHosting 환경에서 PHP가 작동하도록 할 수 없습니다

DigitalOcean 클라우드 서버 아래 새로 생성된 CentOS 노드에서 PHP를 사용하여 Apache VirtualHosting 환경을 설정하려고 합니다.

문제는 그래도가상 호스팅은 그 자체로 작동하지만 PHP는 작동하지 않습니다..

서버 설정:

  • 웹 서버: CentOS 6.5(Apache/2.2.15 포함)
  • PHP 버전: 5.3.3(Apache 모듈로 사용)

취한 단계:

다음 계정으로 로그인:뿌리사용자,

  • Apache 및 PHP 설치:yum -y install httpd php
  • 아래와 같이 새로운 가상 호스트 구성 파일을 생성합니다.

파일:/etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • 가상 호스트 사이트에 대한 새 디렉터리 만들기

아래와 같이,

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • .php아래와 같이 테스트 파일을 배치합니다 .html.

/srv/www/example.org/public_html/(DocumentRoot) 아래의 파일

echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

다음으로 브라우저에서 을 가리키면 index.html작동합니다. 하지만 내가브라우저에 index.php빈 페이지가 나타납니다..

문제 해결

(이미 운 없이 수행/확인한 작업)

  • Apache가 실행 중이고 DocumentRoot액세스 가능한지 확인
  • 모든 디렉토리는 755파일 입니다.644
  • Apache 액세스 로그를 확인했습니다. html 페이지 요청에는 200 상태 코드가 있지만 .php액세스 로그에는 페이지 요청이 없습니다.
  • Apache 또는 PHP 오류 로그에 오류가 없습니다./var/log/messages
  • php_admin_flag engine onvhost 구성 파일에 추가를 시도했습니다.

아래 내용도 참고하세요/etc/httpd/conf.d/php.conf

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php

답변1

내 경험에 따르면 PHP는 심각한 기본 오류가 발생하면 빈 페이지를 렌더링합니다. 일반적으로 수정하기 쉽지만 불행하게도 일반적으로 Apache 로그, PHP 로그 또는 syslog에 아무것도 기록되지 않아 문제 해결 프로세스가 어렵습니다.

다음을 사용하여 php.ini 구성 파일을 찾으세요.

php -i | grep "php.ini"

그러면 다음과 같은 내용이 생성됩니다.

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

즐겨 사용하는 텍스트 편집기를 사용하여 이 구성 파일(이 경우 /etc/php.ini)을 편집하고 오류 및 시작 오류 표시가 켜져 있는지 확인하세요. 항목은 다음과 같아야 합니다.

display_errors = On
display_startup_errors = On

마지막으로 Apache를 다시 시작하면 새로운 PHP 구성을 읽고 컬이나 브라우저를 통해 페이지에 액세스할 수 있습니다. 그러면 문제 해결 프로세스에 도움이 되는 오류 메시지가 생성됩니다.

답변2

가장 먼저 해야 할 일은 Apache 구성에 설정한 Apache 오류 로그를 확인하는 것입니다. 아래에 복사했습니다:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

PHP는 Apache에서 실행되므로 팝업 오류가 서버 로그에 표시됩니다. 서버에 로그인하고 tail다음과 같이 사용하는 것이 좋습니다.

tail -f -n 200 /srv/www/example.org/logs/error.log

하지만 이것이 일반적인 Apache 로그인가요? 아니면 DigitalOcean의 구성인가요? 그 길은 /srv/www/example.org/logs/꽤 이상해 보이기 때문입니다. 표준 Linux에서는 다음과 같은 위치에 있습니다.

tail -f -n 200 /var/log/apache2/error.log

로그가 실제로 전송되는 위치에 관계없이 서버의 PHP 및 Apache에서 무슨 일이 일어나고 있는지 또는 일어나지 않는지에 대한 열쇠가 될 것입니다.

관련 정보