2010-11-26 4 views
5

내 linux/apache 서버에서 cron 작업으로 실행하려는 script.php 파일이 있습니다.linux/apache 서버의 cron 작업에서 script.php를 실행하지만 PHP 파일에 대한 공개 액세스를 제한하지 마십시오.

그러나 공개적으로 www.mycompanyname.com/script.php에 액세스하고 스크립트를 동시에 실행하지 않으려합니다.

어떻게 예방할 수 있습니까? 스크립트를 서버의 액세스에만 제한 할 수 있습니까? chmod를 사용하거나 .htaccess 파일 안의 내용을 설정하고 있습니까?

어떤 조언이 필요합니까? 당신은 script.php에서 PHP의 첫 번째 행으로이 작업을 수행 할 수 있습니다

답변

2

당신은 아마 public_html 디렉토리와 같은 것을 가질 수 있습니다.이 디렉토리에는 모든 phps가 있습니다. 그냥 그 디렉토리의 바깥에 놓으십시오.

+0

소리 나는 아마 잊고 .. 생각하지 논리적으로 public_html 외부 디렉토리 대신 호스트 이름에 매핑 된 루트입니다. 내 script.php가 아파치를 실행해야하므로, public_html 외부의 디렉토리는 여전히 실행 가능합니까? – flyclassic

+0

예! 당신은 dir (당신의 사용자로 cron이 실행된다고 가정) – cambraca

7

...

if (PHP_SAPI !== 'cli') { 
    exit; 
} 

누군가가 HTTP를 통해 스크립트를 안타

에서, PHP_SAPI가 스크립트를 일으키는 원인이 내가 믿는 cgi, 그리고 cli 될 것입니다 곧바로 퇴장하십시오.

물론 이것은 php script.php을 호출하는 cron에 달려 있습니다.

또한 보낼 수 ...

header('HTTP/1.0 404 Not Found'); 

... 또는 물론, 웹 루트 외부에 둡니다.

6

스크립트를 webroot 폴더 외부에두면 웹 서버를 통해 액세스 할 수 없습니다. 예 : 웹 루트는은/var/www가/public_html을/ 당신은 예를 들어, 폴더 외부에이 script.php 넣어에서이다, 오 /의/var/www가

관련 문제