คำถามเฉพาะนี้ถูกถามหลายครั้งพร้อมคำแนะนำที่ดี แต่การที่ผู้ถามละทิ้งอย่างกะทันหันไม่ได้ช่วยอะไร เพราะพวกเขาไม่เคยใส่ใจที่จะกลับมาบอกว่าอะไรได้ผล (สมมติว่าสุดท้ายแล้วจะต้องได้ผล)
ฉันพยายามเรียกใช้สคริปต์หลามจาก PHP แต่ไม่สามารถทำได้ สภาพแวดล้อม: PHP 7.3, Python 3.8, CentOS 7, Apache 2.4, Bluehost VPS
พยายามทั้งสองอย่าง ผู้บริหาร
และ shell_exec
apachectl -S
เผยเซิร์ฟเวอร์ apache ทำงานเป็น none:nobody
เพิ่ม ไม่มีใคร ใน sudoer โดยใช้ ไม่มีใครเลย ALL=(ALL) NOPASSWD: /etc/bin/python3
เพิ่มสิทธิ์ Execute ให้กับสคริปต์ Python และเปลี่ยนเจ้าของ
ถึงไม่มีใคร (เหมือนกับ apache) ls -l การทดสอบ.py
ให้ -rwxr-xr-x 1 ไม่มีใครเลย
สคริปต์ Python ทำงานได้ดีจากเชลล์
นี่คือรหัสของฉัน:
<?php
error_reporting(E_ALL);
$command = 'python3 /home/uploads/testing.py';
$command = escapeshellcmd($command);
$shelloutput = exec($command,$output, $ret_code);
echo "<h1>";
echo $shelloutput;
echo $output;
echo $ret_code;
echo "</h1>";
?>
สคริปต์หลาม:
#!/usr/bin/env python3
นำเข้าระบบ
พิมพ์ ("สวัสดี")
sys.exit(8)
เมื่อฉันเรียกใช้ไฟล์ PHP จากเบราว์เซอร์ ฉันไม่ได้รับอะไรเลย
ฉันขอขอบคุณสำหรับความช่วยเหลือใด ๆ ในการแก้ไขปัญหานี้