2012-04-22 8 views

답변

10

쉘에서 PHP를 실행하는 것은 웹 서버 환경에서 실행하는 것과 완전히 다릅니다. 이전에 명령 줄 프로그래밍을 수행하지 않았다면 몇 가지 놀라운 일이 발생할 수 있습니다.

즉, 정보를 명령에 전달하는 일반적인 방법은 명령 줄에 넣는 것입니다. 당신이 할 경우 스크립트 내에서 다음

php /my/directory/file.php "some value" "some other value" 

$argv[1]"some value"로 설정되고 $argv[2]"some other value"로 설정됩니다. ($argv[0]"/my/directory/file.php"으로 설정됩니다).

+0

나는 그것을 시도했다, 그것은 작동하지 않았다. 나는 그것을 읽을 수 있도록 두 번째 논증을 인용문 사이에 넣어야합니까? 나는 명령에 인용문을 사용하지 않았기 때문에. –

+0

PHP가 명령 줄 용으로 구축 되었습니까? 그것은 다른 SAPI이고 CGI에 사용하는 PHP 바이너리와 다른 PHP 바이너리가 필요합니다. –

+0

나는 shell_exec ("command") 명령을 사용한다. crontab을 만들려면 –

6

명령 줄에서 PHP 스크립트를 실행하면 $argc에서 변수 개수에 액세스하고 배열 에서 실제 값에 액세스 할 수 있습니다. 간단한 예.

php test.php a b c 사용하여이 실행 test.php

<?php 
printf("%d arguments given:\n", $argc); 
print_r($argv); 

고려 :

4 arguments given: 
Array 
(
    [0] => test.php 
    [1] => a 
    [2] => b 
    [3] => c 
) 
+0

+1. –

0

N 위의 방법 중 하나가 저에게 효과적이었습니다. 내 hoster의 공유 서버에서 cron을 실행합니다. cron 작업은 cPanel과 같은 인터페이스로 생성됩니다. 명령 행은 PHP를 호출하여 스크립트 이름과 몇 개의 인수를 전달합니다. 크론에 대한 명령 줄은 모습입니다

:

php7.2 /server/path/to/my/script/my-script.php "test.tst" "folder=0"

어느 $argv와 위의 대답은 내 경우 근무의.

CLI 인수에 액세스하기 전에 을 전역으로 선언해야한다는 문제는 아무도 없습니다. 이것은 공식 PHP 매뉴얼에는 언급되어 있지 않습니다.

아마도 서버로 실행되는 스크립트에 대해 전역 로그온을 선언해야합니다. CLI의 로컬 환경에서 실행중인 스크립트 은 전역 선언이 필요하지 않습니다. 테스트 할 때 여기에 게시합니다.

그러나이 nevertherless 내 경우에 대한 작업 구성은 다음과 같습니다
global $argv; 
echo "argv0: $argv[0]\n\r"; // echoes: argv0: /server/path/to/my/script/my-script.php 
echo "argv1: $argv[1]\n\r"; // echoes: argv1: test.tst 
echo "argv2: $argv[2]\n\r"; // echoes: argv2: folder=0 

내가 $_SERVER['argv'] 자동 전역 배열과 같은 결과를 얻었다. 하나는 이런 식으로 사용할 수있다 : 사람을 도움이

$myargv = $_SERVER['argv']; 
echo $myargv[1]; // echoes: test.tst 

희망을.

관련 문제