ローカル Web サーバー (LAMP) を使用しています。パラメータ「/script.py passed_arg[1] passed_arg[2]」を指定して shell_exec/exec/system を実行すると、戻り値がなく、何も起こりません。
chmod 777 でパーミッションを削除し、ファイルが読めなくなった (readdir() が true に戻った)。
Apache の設定の問題を解消しました (php.ini の disable_functions には shell_exec/exec がなく、セーフモードがオンになっていません)。
hello を出力する別のスクリプトを実行しようとすると、すべて正常に動作します。
脚本の内容に問題があると思います。ROS で catkin ワークスペースを使用していますが、スクリプトを /var/www/html/ にコピーしても機能しません (ターミナルでまったく同じコマンドを実行しても問題なく動作します)。
すべての ros コマンド (具体的には 'import 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