2010-06-12 5 views
0

나는 내가 SH-스크립트에 의해 포장이 스크립트 하지를 호출하지만 cron 작업에 직접 사용리디렉션 PHP - 쉘 스크립트 출력

#!/usr/bin/php -c /etc/php5/cli/php.ini -q 
<?php 
    echo 'hello'; // & do some stuff 
?> 

foo.php PHP가 스크립트를 가지고있다. 그것을 제거하려면 내가 일반적으로 그냥 PHP 파일의 그 자체의 인터프리터 선언에서이 작업을 수행하고 싶습니다 지금

/usr/bin/php -c /etc/php5/cli/php.ini -q foo.php > /dev/null 2 > /dev/null 

를 호출하는 SH-파일을 생성 할 출력 ... 그래서 난입니다 대한 구문을 찾고 있어요 :

#!/usr/bin/php -args [file's content] > /redirect 2 > /redirect 

내가 그것을 위해 googleing 힘든 시간의 종류가 ... 그래서 사람이 올바른 방향으로 날 지점 수 있다면 나는 그것을 정말 감사하겠습니다! 사전에

들으

Corelgott는 오두막 문이 스크립트의 출력을 제어하는 ​​계획이없는

+3

sh 래퍼가 필요없이 cron 작업 명령 (/path/to/script.php>/dev/null)에서 출력을/dev/null로 직접 리디렉션 할 수 있다고 생각합니다. –

+0

아, 그게 내가 아직 생각하지 못했던 해결책 이었어. 그것을 지적 주셔서 감사합니다! 그러면 문제가 해결됩니다. 하지만 내 제안 구문이 어떻게 든 존재하는지 알고 싶습니다 ... – Corelgott

+1

"2"와 ">"사이의 공백을 제거하거나 stdout과 stderr를 같은 위치로 리디렉션해야하는 경우 :'foo>/dev/null 2> & 1' –

답변

0

, 그것은 거기에 같은 같은 사용 아래 여기 유형의 거래 무엇을 실행하기 위해이 프로그램의 더 원하는 옵션이 없습니다.

인터프리터 자체에 출력 인수 (php cli가 제공하지 않음)가없는 경우, > /dev/null 문을 crontab 행에 보관해야합니다.

또한 if 문을 사용하여 모든 print 문을 둘러싼 전역 부울 $output을 포함하도록 스크립트를 수정하고 파일의 맨 위에 추가 할 수 있습니다.

0

처럼, @Victor Stanciu 당신이 cron 작업 명령에서 직접 출력을 리디렉션하지만 내가 생각할 수있는 유일한 다른 방법은 말했다 :

php -r "ob_start(); include 'my_script'; ob_end_clean();" 

난 당신이 fclose(STDOUT)과 표준 출력 닫을 수 있다고 생각하지만, 명백히 상수 STDIN, STDOUTSTDERR은 더 이상 존재하지 않습니다.