
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 on
vhost 구성 파일에 추가를 시도했습니다.
아래 내용도 참고하세요/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에서 무슨 일이 일어나고 있는지 또는 일어나지 않는지에 대한 열쇠가 될 것입니다.