2012-02-29 2 views
1

내 문제는 원격 서버에 파일을 포함 할 수 없다는 점입니다.원격 서버에 파일을 포함 할 수 없음

<?php 
    echo "Including\n"; 
    require_once("http://xx.xxx.xxx.xx:8080/path/to/myfile.inc"); 
    echo "Done..\n"; 
?> 

스크립트가 require_once 함수에서 실패합니다. 이 script.php 에 PHP -d allow_url_include =하지만 난 제공하고있어 브라우저에 http://xx.xxx.xxx.xx:8080/path/to/myfile.inc을 복사하면 내가 php.ini 파일

에에에 allow_url_include를 설정하고 allow_url_fopen을했는지 확인 : 나는으로 스크립트를 실행 해요 파일. 다른 원격 파일 (표준 포트 80에 있음)을 포함 시키려고했지만 아직 행운이 없습니다.

정말 혼란 스러우면 모든 것이 내 사무실 (Mac, 우분투)의 로컬 컴퓨터에서 작동하지만, 우리의 서버. 나는 2 개의 다른 서버, 사실상 및 열성적인 그것에 그것을 시험했다. fopen()을 사용하여 파일을 가져올 수 있습니다.

+3

일반적으로 ** 원격 파일을 포함하고 싶지는 않습니다 **. PHP 코드를 출력하면 시스템에서 실행됩니다! – ThiefMaster

+0

플러스 그것은 정말, 정말 천천히. –

+0

보안 측면에 대해 알고 있습니다. 두 서버를 완전히 제어 할 수 있으며 파일을 사용하여 서버에 대한 액세스를 제한 할 수 있습니다. 실제로 모든 서버는 동일한 네트워크에 있으므로 너무 느리지 않기를 바래요.하지만 이걸 테스트 할 것입니다. 왜 다른 컴퓨터가 아닌 일부 컴퓨터에서만 작동하는지에 관한 골치 아플 수 있습니까? – user918712

답변

0

Require_Once는 로컬 파일에만 사용해야합니다. 원격 파일을 원한다면 file_get_contents를 사용하십시오. 당신이 원격 서버에서 php를 포함 시키려한다면, 정말 불안하거나 php가 원격 서버에서 실행될 것입니다.

+0

문서에서 require_once를 사용할 수 있어야한다고 나와 있습니다. [http://php.net/manual/en/features.remote-files.php](http://php.net/manual/en/features). remote-files.php) 또한 로컬 컴퓨터에서도 작동합니다. – user918712

+0

설명서를 읽으면 다음과 같습니다. 또한 URL은 PHP 5.2.0부터 사용할 수 있습니다. allow_url_include를 사용해야합니다. – MichaelH

2

php.ini에서 allow_url_includeon으로 설정하면됩니다. 댓글에서 언급 한 바와 같이

는하지만,이 응용 프로그램에

거대한

보안 구멍을 엽니 다.

+0

그러나 원격 서버의 콘텐츠를 반드시 포함해야하는 경우 추가 인증 및 캐싱을 추가하는 것을 고려하십시오! – symcbean

+0

@symcbean 감사합니다. 나는 그것이 안전하지 않다는 것을 알고 원격 서버에있는 파일을 포함 할 수는 있지만 어떤 머신에서는 작동하지 않는 것이 문제였다. Starx : 제가 글에서 쓴 것처럼 - allow_url_include를 On으로 설정했습니다 – user918712

+0

stunnel (https://www.stunnel.org/index.html)과 같은 서버간에 통신을 안전하게 사용할 수 있다고 가정합니다. – ven

관련 문제