2010-06-12 5 views
0

와 페도라 서버에 실패 포함 동일 디렉토리는 I는 다음과 같이 몇 가지 파일이 PHP

내가 오류가

Warning: require(config.php) [function.require]: failed to open stream: No such file or directory in [dir]/includes/header.php on line 2
Fatal error: require() [function.require]: Failed opening required 'config.php' (include_path='.:/usr/share/pear:/usr/share/php') in [dir]/includes/header.php on line 2

입니다 (10)이 좀 더 디버깅 않았다 I는

system('pwd'); 

포함하는 호/header.php를 추가하면 [DIR,이 대답해야하는 경우 [DIR]/포함 나타낸다. 포함 경로에 'includes /'를 추가해도 작동하지만, 프로덕션 서버에서 실패하기 때문에 바람직하지 않습니다.

위 코드는 프로덕션 서버에서 작동하며 Fedora 서버의 문서 루트가 마운트 된 CIFS 공유가되도록 개발 환경을 변경하려고 시도하기 전까지는 내 개발 페도라 서버에서 잘 작동했습니다.

아이디어가 있으십니까? 감사.

답변

0

worked fine ... until I tried to change my development environment so that the Fedora server's document root is a mounted CIFS share.

SELinux를 사용할 수 있습니까?

내가 SELinux를 활성화하고 적용 모드에 있는지 내기 위하여려고하고 방해 /var/log/audit/audit.log

확인합니다.

+0

예, 그들은 둘 다있어 동일한 디렉토리에 있습니다. 그리고 ../config.php는 작동하지 않습니다. 왜냐하면 include 'config/config.php'가 작동하기 때문에 부모 디렉토리에있는 것처럼 작동합니다. –

+0

내가 게시 한 후에 내가 틀린 순간임을 깨달았 기 때문에 나는 내 대답을 다시 썼다. 이번 업데이트가 실제로 맞는지 확인하십시오. ;) – Charles

+0

현재 SELinux는 허용 모드입니다. SELinux는 제가 처음 확인한 것 중 하나였습니다. (이것은 내 존재의 상처였습니다) 그런 식으로 몇 가지 문제를 해결했습니다. audit.log는 거부와 같은 것으로 보이지 않습니다. –

0

당신이 말하는 pwd의 동작은 100 % 예상되는 동작이며 적어도 PHP4 이후 였을 것입니다.

PHP는 자동으로 현재 작업 디렉토리 (pwd에서 사용하는)를 ONCE로 설정합니다. PHP는 그것을 변경하지 않습니다. 따라서. chdir()을 사용하여 수동으로 변경하지 않는 한 원래의 현재 작업 디렉토리를 참조합니다.

이 문제에 대한 다양한 해결책이 있습니다. 대부분은 PHP include file strategy needed에서 볼 수 있습니다.

이전에 작동하는 경우 include_path가 어딘가에서 업데이트되었거나 작업 디렉토리가 더 이상 변경되지 않았거나 더 이상 예상하지 못한 이상한 동작을 구현 한 PHP 버전이 더 이상 작동하지 않습니다. 그래서.

어쨌든 include 경로 : ini 파일 또는 포함 경로를 변경하는 스크립트를 확인합니다. 내가 include_path를 업데이트하는 데 사용 된 것으로 추측하고 있지만 더 이상 그렇게하지 않습니다.

이동 방법에 대한 확신이 없지만 .htaccess가 auto_prepend_file을 웹 사이트 구조 외부의 파일에 하드 코드 된 경로로 설정하고 포함 경로를 설정하는 성가신 스크립트가 발생했습니다. (다른 것들 중에서) 웹 구조의 어딘가에.예를 들어, 문제를 해결해야하는 옵션 'noserverino'와 CIFS 공유를 설치

관련 문제