2013-02-25 2 views
-3

아파치로 실행할 때 내 코드가 제대로 작동하지만 CLI를 통해 실행할 때이 변수 $ jobID를 볼 수없는 문제가 있습니다. 이견있는 사람?PHP에서 전역 변수가 작동하지 않습니다. CLI

추신. 세계 변수를 사용하지 말아주세요.

편집 :

이 나던 작업 :

$jobID = mysql_insert_id(); 

function someFunction() { 
    global $jobID; 
    echo $jobID; 
} 

이 수행합니다

$jobID = mysql_insert_id(); 

function someFunction($jobID) { 
    echo $jobID; 
} 

는 전역 등록 사용 을 고정 :이 기능은 PHP 5.3.0부터 배제 된 PHP 5.4.0부터 제거되었습니다. http://php.net/manual/en/security.globals.php

+2

. 전역 변수는 CLI 및 다른 곳에서도 동일하게 작동합니다. – deceze

+0

코드가하는 일은 무엇입니까? 어떻게해야한다고 생각하니? – Oswald

+0

그것은 데이터베이스에 줄을 추가합니다.이 함수를 $ jobID라고 부르면 간단하게 나타납니다. $ jobID는 이미 설정되어 있으므로 (아파치와 함께) 표시해야하지만 CLI에서는 볼 수 없습니다. php.ini에 옵션이 있습니까? 아래 표는 무엇입니까? – amof

답변

3

이 어쩌면 :

$GLOBALS['jobID'] = 12; 

//Thats the way to initialize the var...and in the function: 

function someFunction() { 
    echo $GLOBALS['jobID']; 
} 

someFunction(); //testing 

Saludos) 잘못 될 일을 얘기하는 것은 불가능 그 자체로 그 코드 조각에서

+0

로버트 덕분에 Robert는이 작업을했는데, CLI에서 global 키워드가 작동하지 않는 이유는 무엇입니까? – amof

+0

많이는 아니지만 .... 나는 CLI에서 PHP 애플 리케이션을 수행하지는 않지만 GLOBALS는 모든 범위에 존재하기 때문에 superglobal;) – Hackerman

+2

PHP에는 전역 변수가 없습니다. 글로벌 범위를 가지고 있습니다. 함수 또는 콜백 외부에서 선언 된 변수는 암시 적으로 거기에 보관됩니다. 원래 할당'$ jobID = 12; '가 어떤 함수/메소드에서 발생했을 때, 그것은'global' 키워드가 사용되지 않는 한 로컬 범위에 존재합니다. 어떤 일이 OP를 위해 일어났지 만, 놓치지 않을 것이다. – mario

0

, 기능은 예를 들어, 때문에 [see this] 전화로 인수를 전달 글로벌 사용하지 마십시오 변경 :

function someFunction() { 
    global $jobID; 
    echo $jobID; 
} 

에 :

function someFunction($arg1) { 
    echo $arg1; 
} 
$anyvar = 'some value'; 
someFunction($anyvar); 
+0

그게 실제로 옵션이 아니라면, 나는 클래스를 사용하지 않고있다. 함수는 또 다른 10 개의 인자를 가지고 있으며, 여러 가지 이유로 인자로 $ jobID를 넘겨주고 싶지 않다. – amof

0

PHP의 상점에 줄 인수를 명령 $ argv 배열. 인수를 일반 변수로 확장하지 않습니다. 이 확장은 오래된 PHP 버전에서 자주 사용되는 나쁜 동작이므로 사용하지 말고 인수에 액세스하는 대신 $ argv 배열을 사용하십시오.

+0

그것의 $ argv 배열이 아니며, 변수가 스크립트에서 파기되었습니다. – amof

관련 문제