2011-04-21 3 views
2

서버에서 include() 함수가 작동하지 않고 왜 잘 모르는 문제가 있습니까?include() 작동하지 않는다

나는이 : 그것은 반환

if (file_exists('/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')) { 
    echo "1 works"; 
} else { 
    echo "The file 1 does not exist"; 
} 

if(include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php" == 'OK') 
{ 
    echo 'INCLUDE 1 works'; 
} 
else 
{ 
    echo 'Step 1 fail'; 
} 
if(include '/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php' == 'OK') 
{ 
    echo 'INCLUDE 2 works'; 
} 
else 
{ 
    echo 'Step 2 fail'; 
} 

: 1 works Step 1 fail Step 2 fail 내가 작동하도록 강제하는 방법을 모른다./


그것은 때 나를 위해 정말 이상하다 : 디렉토리를하지만 include 디렉토리없이 너무 일하고 싶어하지 않습니다 - 도움말 내가 젠드 프레임 워크를 사용하고이 파일을 라이브러리에 (평행 -libraries를 젠드하기

include ("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"); 

그리고 난 단지 빈 페이지가 올바른 경로입니다하지만 추가 할 때 : 내가 추가!

include ("/homedddd/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"); 

을 그리고 빈 페이지가 아닌 잘못된 경로는, 그것을 좋아 보인다. 내 서버에서 작동하지 않는 IntelliSMS 라이브러리에 문제가 있음을 의미하지만 그 이유를 모르겠습니다. 아마도 서버가 SMS 또는 뭔가를 보내는 것을 차단합니까? 너는 어떤 생각을 가지고 있니? 이 라이브러리는 http://intellisms.co.uk/sms-gateway/php-sdk/입니다. 아마도 OpenSSL 확장 모듈이 필요하다는 문제가 있습니까? 작품을 시작하려면 어떻게해야합니까?

+0

그냥 사용 '포함 ('/ 가정/... '); 당신이 성공하지 처음 제안을 시도한 후, 나는 내 대답을 업데이트 – Aif

+0

'. 어쩌면 허가 문제 일 수 있습니다. 당신 (서버)이 포함시키고 자하는 파일에 대한 읽기 권한을 가지고 있습니까? – Demento

+0

'IntelliSMS.php'스크립트가 반환하는 것은 무엇입니까? 다시 말하면,'return' 문으로 끝내거나 (사용법에 따라) 또는'echo' 무엇인가 (사용에 충분하지 않을 것입니다)입니까?/ –

답변

1

코드의 첫 번째 블록에서 알 수 있듯이 /home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php이 있습니다. 이 파일을 포함 시키려고하면 정확히 같은 문자열을 사용하지 않습니다. 그렇게하면 작동 할 것입니다.

편집 : 시도해 보았지만 실패했습니다. 이 경우 권한 문제와 같이 보입니다. 해당 파일에 대한 읽기 권한이 없으면 첫 번째 테스트가 작동하지만 파일을 포함하면 실패합니다.

+0

흠 내가 읽기 및 실행 할 수있는 권한을 변경 한 그것은 여전히 ​​작동하지 않습니다 : – canimbenim

0

슬래시가 변경되었습니다. 이것은 문제 일 수 있습니다.

+0

나는이 모든 문제가 해결되지 않는 한 내 게시물을 편집 한/I가 모든 권한을 추가하고 확인합니다 ... – canimbenim

0

경로 이름에 \ 백 슬래시를 사용하면 안됩니다. Windows 및 Un * x 서버에서 모두 작동하는 슬래시 /을 사용하십시오.

또한 기본 디렉토리 이름이 두 서버에서 동일하지는 않습니다. 이 재배치 확인하고과 같이 DOCUMENT_ROOT/home/p003/htdocs 교체 :

include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php"; 

주의 따옴표.

가능한 경우 대소 문자가 혼합 된 파일 이름을 사용하지 않는 것이 좋습니다.

0

여러분이 잘못하고있는 것이 있습니다. 사실 한 번 시도 할 때마다 거짓을 포함하려고했습니다. 이

include '/path/to/file.php' == "OK"; 

같은 일을 뭔가

include FALSE; 

이것은 당신이

if((include '/path/to/file.php') == "OK") { echo("works"); } 

다른 SO 사용자가 경로가 너무 길기 때문에이 사실을 간과하고 싶었던 것을 아마 것을 같음 비교 코드 블록에 숨겨집니다.

+0

을 나는이 : 경우 (file_exists가 ('/ 홈/P002/htdocs에/Project2에/라이브러리/IntelliSMS/SendScripts/IntelliSMS.php')) { 는 "1
작동"에코; } 다른 사람은 { 는 "파일 1
존재하지 않습니다"에코; } 이 경우 { \t는 '1 일
포함'에코 (. ($ _SERVER [DOCUMENT_ROOT] "/ Project2에/라이브러리/IntelliSMS/SendScripts/IntelliSMS.php") == 'OK'를 포함); 한다} else { \t 에코 '1 단계
실패'; (("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php") == 'OK'를 포함)하는 경우 }는 { \t '는 2 일
포함'에코; 한다} else { \t 에코 '2 단계
실패'; } 여전히 동일합니다. – canimbenim

관련 문제