문제

나는 다음과 관련하여 약간의 문제가 있습니다.

이 줄을 실행할 때 :

echo exec(createDir($somevariable));

이 오류가 발생합니다.

Warning: exec() [function.exec]: Cannot execute a blank command in /home/mydir/myfile.inc.php on line 32

모든 아이디어.

감사.

도움이 되었습니까?

해결책

exec() 문자열 인수가 예상되며, 이는 운영 체제에 전달 될 수 있습니다. 다시 말해, 이것은 서버의 명령 줄에 대한 포털입니다.

어떤 기능이 있는지 잘 모르겠습니다 createDir() 그렇습니다. 그러나 유효한 명령 줄 문자열을 반환하지 않으면 그로 인해 실패 할 것입니다.

Linux에서는

exec('/usr/bin/mkdir '.$path);

... 반면에, 당신은 사용하지 말아야합니다. exec() 반드시. 대신 여기서 할 수있는 일은 mkdir()

다른 팁

와 함께 exec 명령 줄을 사용하는 경우와 같이 시스템 호출을 실행할 수 있습니다. PHP 기능을 실행하는 데 아무런 도움이되지 않습니다.

디렉토리를 만들려면 다음을 수행 할 수 있습니다.

exec( 'mkdir [NAME OF DIRECTORY]' );

나는 당신의 것 같아요 createDir() 기능은 아무것도 반환하지 않습니다. 또한 확인할 가치가 있습니다 $somevariable 또한 현명한 것으로 설정됩니다

exec ()의 목적을 오해하고 있습니다. 디렉토리를 작성하는 것만으로도 mkdir ()를 사용해야합니다.

다른 게시물과 의견에서 파생 된 것 같습니다.

제 생각에는 createDir() 당신이 직접 쓴 PHP 기능입니다. 그것은 단지 디렉토리를 만드는 것 이상을 수행합니다 - 그것은 그것을 채우고, 시간이 걸릴 수 있습니다.

어떤 이유로 당신은 다음 명령이 전에 실행된다고 믿습니다. createDir() 일을 마쳤으며, 당신은 createDir() 사용 exec() 당신은 이것을 피할 수 있습니다.

이것이 탈출되면 의견으로 말해 주시면이 답변을 삭제하겠습니다.

그럴 가능성은 거의 없습니다 createDir() 반품 후 계속 작동합니다 (그렇다면 우리는 그것을 '비동기'라고 부릅니다). 프로그래머는 비동기식으로 만들기 위해 길을 벗어나야합니다. 그러니 그 가정을 확인하십시오.

비록 그렇다 하더라도, exec() PHP 기능을 호출하는 것이 아닙니다. 쉘 명령을 호출하기위한 것입니다 (명령 프롬프트에서 입력 한 종류). 우리 중 많은 사람들이 관찰 한 바와 같이, 당신이 매우 조심하지 않는 한 피해야합니다. 사용자가 임의의 쉘 명령을 실행할 수있는 위험이 있습니다.

비동기 기능이 완료되기를 기다려야한다면,이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.

첫 번째 방법은 비동기 기능이 편견 가능한 방식으로 작성되어야합니다. 일부 API를 사용하면 비동기 작업을 시작하여 '핸들'을 제공 한 다음 다른 작업을 수행 한 다음 핸들에서 리턴 상태를 얻을 수 있습니다. 같은 것 :

handle = doThreadedJob(myParam);
# do other stuff
results = getResults(handle);

GetResults는 작업이 끝날 때까지 기다립니다.

두 번째 방법은 좋지 않으며 API가 덜 도움이 될 때 사용할 수 있습니다. 불행히도, 그것은 직업이 끝났다는 단서를 찾아서 그것이 될 때까지 투표하는 문제입니다.

while( checkJobIsDone() == false ) {
    sleep(some time interval);
}

CreateIR ()에 리턴 값이 없다고 생각합니다.

노력하다 exec("mkdir $somevariable");

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top