Apache httpd는 CentOS 7에서 PHP를 구문 분석할 수 없습니다.

Apache httpd는 CentOS 7에서 PHP를 구문 분석할 수 없습니다.

새로운 CentOS 7 서버를 설정하고 있는데,

Apache httpd를 성공적으로 설치하고 html 시작 페이지를 얻은 다음 PHP 5.4를 설치하고 테스트 페이지로 테스트해 보았습니다.

<?php
phpinfo();
?>

/var/www/html에 넣었지만 빈 페이지가 나타납니다. Apache 오류 로그에 다음과 같이 나와 있습니다.

[Mon Jan 26 21:20:12.474636 2015] [:error] [pid 8352] [client ::1:60206] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/test.php' (include_path='.:/php/includes') in Unknown on line 0

내가 시도한 것은 다음과 같습니다.

나는 다음을 추가했다 /etc/httpd/conf/httpd.conf:

LoadModule php5_module "/usr/lib64/php"
AddType application/x-httpd-php  .php

발견: DirectoryIndex index.html그런 다음 추가됨index.php

include_path='.:/php/includes'약속 한 적 없어/etc/php.ini

그런 다음 Apache를 다시 시작하십시오. 변경 없음! 어떤 아이디어가 있나요?

고쳐 쓰다

내가 확인할 때: apachectl configtest나는 다음을 얻습니다:

[Mon Jan 26 22:22:49.748764 2015] [so:warn] [pid 4984] AH01574: module php5_module is already loaded, skipping
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK

그래서 내 호스트를 나열했습니다.

[admin@localhost etc]$ cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

ServerName www.example.com:80그런 다음 httpd.conf에서 다음으로 대체 ServerName localhost4.localdomain4하고 시도했습니다.ServerName localhost:80

그러나 문제는 남아 있습니다. 그러나 apachectl configtest결과는 다음과 같습니다.

[Mon Jan 26 22:49:46.968433 2015] [so:warn] [pid 5841] AH01574: module php5_module is already loaded, skipping
Syntax OK

및 오류 로그:

[Mon Jan 26 22:58:27.110725 2015] [:error] [pid 6103] [client ::1:47747] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/test.php' (include_path='.:/php/includes') in Unknown on line 0

해결책

마침내 php54를 제거한 다음 다음을 사용하여 PHP를 다시 설치하기로 결정했습니다.

yum install php php-pear

ServerName그런 다음 conf를 다음으로 변경하면 localhost:80작동했습니다!

시간을 내주셔서 모두 감사드립니다

답변1

PHP를 활성화한 경우 약간 다른 항목이 있습니다 httpd.conf.

LoadModule php5_module /etc/httpd/modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

제가 관찰한 바로는 위에 게시한 "LoadModule" 지시문이 로드할 .so 파일을 지정하지 않는다는 것입니다. 해당 파일이 있는 디렉터리나 ".so" 접미사가 없는 파일 이름뿐만 아니라 특정 .so 파일을 찾아보세요.

apachectl configtest실행하면 뭐라고 나오나요?

답변2

LoadModule아무 것도 아닌 공유 객체를 가리켜야 합니다 /usr/lib64/php. 예를 들어:

LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php

php5_module로 다른 것을 로드하면 실제 모듈이 로드되지 않을 수 있습니다("이미 로드됨" 오류 메시지로 판단).

답변3

~을 위한센토스 6.7 x86-x64, 이것

LoadModule php5_module /etc/httpd/modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

내 문제를 해결했다<?php phpinfo(); ?>

관련 정보