
문제:
이것은 꽤 오랫동안 계속되어 왔습니다. 저는 딱 한 번만 설치를 완료했고 그 후에는 다음 중 하나를 수행했습니다.
- PHP 페이지에는 PHP 코드가 표시됩니다. (현재 오류는 아니지만 이러한 오류를 경험했습니다.)
- PHP 페이지에서 "서버 내부 오류"를 반환합니다.
내가 정말로 원하는 것은 PHP가 oci8을 통해 Oracle 11g XE에 연결되도록 하는 것입니다. 이렇게 어려울 줄은 몰랐습니다.
또한 에 있는 오류 로그(PHP의 오류 로그인 것으로 가정함)를 살펴보면 /var/log/httpd/error_log
다음 오류가 나타납니다.
PHP 치명적인 오류: 알 수 없음: '/var/www/html/info.php'(경로 = '.:/usr/share/pear:/usr/share/php' 포함)를 열지 못했습니다.
나는 전에 이런 일을 겪은 적이 없습니다.
시스템:
- 페도라 19 x86_64
- 오라클 11g XE
- 아파치 2.4.6
- PHP 5.5.4
추가 정보:
info.php에는 다음 내용만 포함되어 있습니다:
<?php
phpinfo();
?>
php -i
작동하지만 거기에서 무엇을 찾아야할지 모르겠습니다.
내가 시도한 것:
풍부한. 하지만 PC를 다시 포맷하고 다시 시작한 이후로 제가 수행한 작업은 다음과 같습니다.
- 오라클 11g XE 설치
- 해당 Oracle에 내 데이터베이스를 올바르게 백업했습니다.
- 다음을 추가하여 .bashrc를 수정하세요.
TMP=/tmp; TMP 내보내기
TMPDIR=$TMP; TMPDIR 내보내기ORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=DB11G; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME ORACLE_SID=XE; export ORACLE_SID NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`; export NLS_LANG ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
클래스 경로 내보내기
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
- yum groupinstall "개발 라이브러리"
- 냠 httpd 설치
- 냠 PHP를 설치하세요
Apache를 시작하고 부팅 시 시작되도록 구성한 후 Fedora 테스트 페이지에 액세스하고 테스트 PHP 페이지를 /var/www/html/
디렉터리에 넣을 수 있었습니다.
localhost는 잘 작동합니다.
localhost/info.php는 "서버의 내부 오류"를 반환합니다.
나는 내가 뭘 잘못하고 있는지 전혀 모른다. 아직 PHP를 설치하고 실행하지도 않았기 때문에 PHP를 Oracle에 연결하는 능력이 꽤 걱정됩니다. 어떤 아이디어나 제안이 있나요? 감사해요.
답변1
다음에 대한 권한을 확인하세요.
/var/www/html/info.php
Apache 프로세스를 실행하는 사용자에게 이 파일에 대한 올바른 권한이 없을 때 유사한 오류가 발생한 것을 기억합니다.
좋은 일은 아니지만 info.php, chmod 777 /var/www/html/info.php의 현재 권한을 기록하고 작동하는지 확인할 수 있습니다. 그렇다면 그게 문제이고 문제를 해결해 보세요.
또한 @GeoSword 지침에 따라 HTML 대신 PHP 코드가 표시되는지 확인하십시오. 이는 Apache의 PHP 구성이 올바르지 않음을 의미합니다.
답변2
여기에는 여러 가지 일이 벌어지고 있는 것 같습니다.
결과 대신 PHP 코드를 표시한 페이지는 아마도 Apache 구성에서 PHP 핸들러가 제대로 정의되지 않았기 때문일 것입니다. Redhat 설치는 일반적으로 이런 종류의 작업을 처리합니다. 그러나 PHP 파일을 처리하려면 Apache 구성 어딘가에 이와 같은 것이 필요합니다.
LoadModule php5_module modules/libphp5.so
AddHandler application/x-httpd-php .php .php5 .phtml
AddHandler application/x-httpd-php-source .phps
귀하가 겪고 있는 치명적인 오류는 아마도 /var/log/httpd/error_log에 표시되는 오류일 것입니다.
/var/www/html/info.php가 존재하지 않는 것 같고 PHP 프로그램이 실제로 그것을 원하는 것 같습니다. 그걸로 무엇을 해야 할지 말할 필요는 없을 것 같아요! :)