2014-09-17 4 views
2

최근에 소스에서 XHP 1.5를 작성하여 기존 웹 서버에 설치했습니다. 웹 서버는 PHP 5.4.32, 아파치 2.2.15 mod_php (fastcgi 아님), CentOS 6.5를 사용하여 PHP를 호출합니다. 새로운 XHP 구문에 의존하지 않는 기존 PHP 코드는 모두 Imagick, curl 및 JSON과 같은 다른 확장 기능을 포함하여 훌륭하게 작동합니다.Apache를 통해 스크립트를 호출 할 때 PHP 5.4가 포함 된 XHP가 파서에 영향을 미치지 않습니다.

XHP installation 테스트를 기반으로 테스트 파일을 사용하여 :

명령 줄에서 실행하면 예상대로이 작동
<?php 
echo "XHP!\n"; 
exit; 
echo <a/>; 
?> 

. (XHP!를 출력 한 다음 종료합니다.) 파서가 실패하지는 않지만 종속성을로드하지 않기 때문에 파서가 표시되지 않습니다.

Apache를 통해이 스크립트를 가져 오면 아파치를 통해 오류

Parse error: syntax error, unexpected '<' in /var/www/html/bloom/play.php on line 4 

얻기은 phpinfo()는 XHP가 true를 돌려 아파치를 통해 ("XHP") extension_loaded,로드되었는지 보여줍니다.

XHP가 명령 줄에서 작동하지만 Apache를 통해 실행될 때 작동하지 않는 (분석하지 않아도 됨) 원인은 무엇입니까?

+0

Apache에 mod_php 모듈을로드 했습니까? 도메인/서브 도메인에 대한'httpd.conf' 파일이나'vhost' 파일을 보여 주시겠습니까? 'LoadModule php5_module modules/libphp.so'와'AddType application/x-httpd-php .php' – tftd

+0

죄송합니다. 기존 PHP 페이지를 지정해야합니다. imagick, json, curl과 같은 다른 확장 기능을 포함하여 XHP 유형 구문이 완벽하게 작동하지 않습니다. 우리의 vhost와 httpd.conf는 PHP 동작을 수정하지 않으며 /etc/httpd/conf.d/php.conf는 완전히 바닐라처럼 보입니다 (여러분이 제안하는 LoadModule과 AddType을 모두 포함합니다) –

+0

p.s. 문제를 해결 한 경우 아래에 답변을 게시하고 후손을 위해 답을 표시하십시오. –

답변

0

내 프로덕션 서버 (작동하지 않음)가 테스트 서버 (작동 중)와 다른 점을 자세히 살펴본 결과 모든 서버에 APC 3.1.15가 설치되어 있지만 프로덕션 환경에서는 APC의 opcode 캐시가 /etc/php.d/apc.ini :

# BAD NEWS 
apc.enable_opcode_cache=0 

이와 같은 결과는 성능상의 이유로 인해서 발생했습니다. 나는 또한이 비록 (모두 APC를 제거하여 문제를 해결 할 수있었습니다

# WORKING 
apc.enable_opcode_cache=1 

: /etc/php.d/apc.ini이 라인을 변경하고 아파치를 다시 시작하여, APC의 연산 코드 캐시 켜기

는 XHP 즉시 작업을 시작 원인 내 애플 리케이션에서 실용적이지 않다).

이는 CLI가 아닌 웹에서 작동하는 이유를 설명합니다. 모든 서버에는 apc.enable_cli = 0이 있으므로 APC는 CLI에서 XHP를 방해하지 않습니다.

0

가능한 이유 중 하나는 PHP의 버전 차이입니다. 특히 소스에서 XHP를 작성하고 있기 때문입니다. 여러 버전의 PHP가 설치된 공유 호스트에서 비슷한 이상한 동작이 발생했습니다. Apache에서보고 한 PHP 버전 (phpinfo() 출력보기)과 명령 행 php -v에서 사용중인 버전을 비교하십시오. 차이가 있다면, 그 문제에 대한 하나의 설명이 될 수 있습니다.