2017-04-12 4 views
-1

저는 나무 딸기 파이에 있는데 아파치 서버를 사용하고 있습니다. PHP 코드는 url의 id가 짝수이면 python 스크립트를 실행합니다. python 스크립트는 if-else 블록 밖에있을 때 완벽하게 실행됩니다.if-else 문에서 PHP에서 python 스크립트를 실행할 수 없습니다.

<?php 
$op=shell_exec("python /home/pi/hi.py"); 
echo $op; 

$id = intval($_GET["id"]); 
echo $id."\n"; 
?> 

그러나 if-else 블록에 배치하면 작동하지 않습니다.

<?php  
$id = intval($_GET["id"]); 
echo $id."\n"; 

if($id%2==0) 
echo "Even"; 
$op=shell_exec("python /home/pi/hi.py"); 
echo $op; 
else 
echo "Odd"; 
?> 

저는 PHP에 익숙하지 않아 문제를 이해하지 못하는 것 같습니다.

+1

if 뒤에 else 문이 있기 때문에 if/else에 대괄호가 필요합니다. –

+0

오 감사합니다. 가장 간단한 일을 놓쳤습니다. –

답변

1

else은 실제로이 경우 구문 오류입니다. if 이후의 명령문 주위에 중괄호가 없으면 PHP는 하나의 문을 따르기를 기대합니다. 둘 이상이 있으므로 else에 도달하면 예상치 못한 결과가 발생합니다.

중괄호를 추가하면 문제가 해결됩니다.

if ($id%2==0) { 
    echo "Even"; 
    $op=shell_exec("python /home/pi/hi.py"); 
    echo $op; 
} else { 
    echo "Odd"; 
} 

일반적으로, 나는 당신이 단 하나의 문이 할 경우에도, 단지 항상은 괄호를 사용하는 것이 좋습니다 생각합니다. 그런 식으로 나중에 명령문을 추가 할 때이 문제가 발생하지 않습니다.