2017-01-07 3 views
-2

로컬 웹 서버 (LAMP)를 사용하고 있습니다. "/script.py passed_arg [1] passed_arg [2]"매개 변수를 사용하여 shell_exec/exec/system을 실행할 때 반환 값이 없으며 아무 것도 발생하지 않습니다.PHP에서 python 스크립트를 실행할 수 없습니다

chmod 777을 사용하여 사용 권한을 제거 했으므로 읽을 수없는 파일 (readdir()이 다시 나타납니다).

php.ini disable_functions에는 shell_exec/exec가없고 safemode가 설정되지 않았습니다.

안녕하세요 모든 것을 올바르게 인쇄하는 다른 스크립트를 실행하려고 할 때.

스크립트 내용에 문제가 있다고 생각합니다. ROS에서 catkin 작업 공간을 사용하고 있지만/var/www/html /에 스크립트를 복사 할 때에도 (터미널에서 똑같은 명령을 실행해도 문제가 없습니다) 작동하지 않습니다.

모든 ros 명령 (특히 '가져 오기 rospy')을 주석 처리 할 때 작동합니다 (남은 항목은 무엇이든).

스크립트 내용 :

#!/usr/bin/env python 

## Simple talker demo that published std_msgs/Strings messages 
## to the 'chatter' topic 

import sys 
import rospy 
from std_msgs.msg import String 

def talker(): 
    X_Coordinate = float(sys.argv[1]) 
    Y_Coordinate = float(sys.argv[2]) 
    Guest_First_Name = sys.argv[3] 
    Guest_Last_Name = sys.argv[4] 
    Office_Name = sys.argv[5] 
    pub = rospy.Publisher('chatter', String, queue_size=10) 
    rospy.init_node('talker', anonymous=True) 
    rate = rospy.Rate(10) 
    hello_str = "go_to "+ str(X_Coordinate)+" "+str(Y_Coordinate)+"  "+Guest_First_Name+" "+Office_Name 
    rospy.loginfo(hello_str) 
    pub.publish(hello_str) 
    rate.sleep() 

if __name__ == '__main__': 
    try: 
     talker() 
    except rospy.ROSInterruptException: 
     pass 
+0

스크립트를 실행하는 PHP 코드는 어디에 있습니까? –

+0

/var/www/html/ 위의 스크립트를 보유하고있는 동일한 디렉토리 –

+0

파이썬 스크립트를 호출하는 데 사용중인 PHP 코드를 _show_ 사용해야한다는 의미입니다. Btw, 더 중요한 것은 명령 줄에서 호출 할 때 파이썬 스크립트가 작동합니까 아니면 동일한 문제가 있습니까? –

답변

0

당신은 오류 출력 또는 무슨 일이 일어나고 있는지의 표시에 대한 아파치 로그를 확인해야합니다. 그렇지 않으면 확실하게 말하기는 어렵습니다.

업데이트 된 질문에 따르면이 문제는 웹 사용자에게 ROS 환경을 제공하지 않는 것으로 보입니다. 나는. 웹 서버가 파이썬 스크립트를 실행할 때 /opt/ros/$ROSDISTRO/setup.bash가 소스되지 않습니다. 예 : import rospy 그리고 스크립트가 실패합니다.

호출시 파이썬 인터프리터가 rospy을 찾을 수 있도록 설정을 변경해야합니다. 이것은 PYTHONPATH env 변수에 적절한 경로를 추가하는 것을 의미합니다 (추가 할 내용을 보려면 터미널에서 setup.bash를 소싱 한 후 echo $PYTHONPATH을 수행하십시오). 다른 env 변수를 설정해야 할 수도 있습니다 (예 : ROS_ROOT 또는 유사한 (오류 출력을 점검 한 후 printenv | grep ROS을 비교하십시오).

+0

답변 해 주셔서 감사합니다. 실수로 슬래시를 삭제했습니다. 원래 코드에서 당신이 대답 한 것처럼. 나는 그것을 새롭게했다. –

+0

그래, 그렇진 않아. 두 번째 가능성이있는 내 대답을 업데이트했지만 실제 오류 또는 진행 상황에 대한 웹 서버 로그를 확인해야합니다. – dseifert

관련 문제