2012-05-06 2 views
1

현재 도메인 이름이 비어 있는지 확인할 수있는이 작은 스크립트가 있습니다. check.php? domain = xxxx.com을 입력하면 브라우저에서 작동하며 무료인지 여부를 확인합니다.

$ _GET이 (가) 사용되므로 브라우저에서만 작동하며 명령 줄에서는 작동하지 않습니다.

PHP 매뉴얼에이 작업을 위해 $ argv 또는 getopt()를 사용해야한다고 나와 있습니다. 나는 그것을 시도했지만 스크립트가 작동을 멈춘다.

다음 코드를 명령 줄에서 어떻게 작동시킬 수 있습니까?

<?php 
include_once('/home/xxx/API.php'); 
$CClient = new XCApi(); 
$CClient->isAvailable(); 
$d = $_GET['domain']; 
ob_implicit_flush(1); 

for ($i = 0; $i < 60000; ++$i) { 

$domainResult = $CClient->checkDomainAvailability(new XDomain($d)); 

if ($domainResult->getStatus() == "domain_available") { 
    echo $i . ". Domain " . $d . " is free (checked: " . date("Y-m-d H:i:s") . ")<br />"; 

    $_GET['domain'] = $d; 
    include_once('Register.php'); 
    exit; 

} 
elseif ($domainResult->getStatus() == "domain_unavailable") { 
    echo $i . ". Domain " . $d . " is unavailable (checked: " . date("Y-m-d H:i:s") . ")<br />"; 
} 
else { 
    echo $i . ". Domain " . $d . " is unknown (checked: " . date("Y-m-d H:i:s") . ")<br />"; 
} 
echo"<pre>"; 
print_r($domainResult); 
echo"</pre>"; 
} 
?> 

답변

3

변경

$d = $_GET['domain']; 

에 :

$d = $argv[1]; 

...이 같은 명령 줄에서 호출 :

php /path/to/script.php "www.domaintocheck.com" 
+0

고맙습니다. 나는 이것을 시도했지만 효과가 없다. 출력이없고 검은 색 화면 만 출력됩니다. 내가 명령에 명확하게 입력하는 것처럼. – Lisa

+0

이것은 효과가 있습니다. 나는 감사와 함께 스크립트를 끝내는 것을 잊었다 : – Lisa

+0

이것은 SSH 세션이 열려있는 한 작동한다. 세션을 닫으면 코드가 작동을 멈 춥니 다. – Lisa

3

는이 파일을 포함, 명령 인수를 읽고 달러 (A $)의 _GET 배열을두고 다른 스크립트를 작성. 와

#!/... 
<?php 
$_GET = array(
'domain' => $argv[1] 
); 

include 'yourscript.php'; 

하거나 (사본)

+0

나는 이것을 시도했지만 얻을 수있다. 3 행의 /home/xxx/scrip.php에서 구문 분석 오류 : 예기치 못한 '=', 예상 ')' – Lisa

+0

배열 작성 구문이 잘못되어'array (' domain '=> $ argv [1])' – knittl

0

이 중복입니다PHP passing $_GET in linux command prompt

리눅스의 또 다른 가능한 방법은 (서버의 도메인 이름 변경 로컬 호스트) 곱슬 곱슬 사용하는 것입니다 : 확인

curl http://localhost/check.php?domain=xxxx.com 

마지막으로, 간단한 어리석은 방법입니다 $ _GET 경우 [ '도메인이의 '] 또는 $ argv [1] 또는 getopt ('domain : ')가 설정됩니다.

그런 식으로 스크립트는 http 요청 또는 명령 줄에서 작동합니다.