Score:1

ไม่สามารถเรียกใช้สคริปต์ไพ ธ อนจาก PHP

ธง br

คำถามเฉพาะนี้ถูกถามหลายครั้งพร้อมคำแนะนำที่ดี แต่การที่ผู้ถามละทิ้งอย่างกะทันหันไม่ได้ช่วยอะไร เพราะพวกเขาไม่เคยใส่ใจที่จะกลับมาบอกว่าอะไรได้ผล (สมมติว่าสุดท้ายแล้วจะต้องได้ผล)

ฉันพยายามเรียกใช้สคริปต์หลามจาก 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 จากเบราว์เซอร์ ฉันไม่ได้รับอะไรเลย ฉันขอขอบคุณสำหรับความช่วยเหลือใด ๆ ในการแก้ไขปัญหานี้

in flag
รหัสของคุณใช้ได้สำหรับฉัน ตรวจสอบการตั้งค่า httpd ของคุณ เพิ่มความละเอียดของบันทึกหากจำเป็น
in flag
คุณไม่จำเป็นต้องกำหนดค่า sudo คุณไม่จำเป็นต้องตั้งค่าไฟล์ .py ให้เรียกใช้งานได้ เนื่องจากคุณกำหนดให้เป็นพารามิเตอร์สำหรับไบนารี python3 python3 สามารถดำเนินการได้โดยผู้ใช้ทุกคน
cn flag
`/etc/bin/python3`? คุณแน่ใจในชื่อไฟล์นั้นหรือไม่?
Rocky avatar
br flag
@DanilaVershinin ทำได้ดี `whereis python3' ให้ 'python3: /usr/bin/python3` ยังไม่ทำงาน
Rocky avatar
br flag
@GeraldSchneider ขอบคุณสำหรับการแก้ไขคำถาม ตอนนี้ดูสมบูรณ์แบบแล้ว ฉันควรดูอะไรในไฟล์กำหนดค่า apache เพื่อเรียกใช้ python จากเชลล์ ฉันตรวจสอบไฟล์ apache error_log ไม่มีอะไรอยู่ที่นั่น จะเพิ่มความละเอียดของบันทึกได้อย่างไร ฉันคิดว่าฉันมีค่าสูงสุดแล้ว
Rocky avatar
br flag
@GeraldSchneider ดูเหมือนว่าปัญหายังคงมีอยู่ แต่ในทางที่แตกต่างกัน PHP สามารถเรียกใช้สคริปต์จากเซิร์ฟเวอร์ของฉันได้ ยกเว้นไดเร็กทอรีที่เรียกใช้ไซต์ Wordpress ฉันดูทุกที่เพื่อดูว่าอะไรสามารถแทนที่คำสั่ง php.ini เริ่มต้นได้ แต่ทำไม่ได้ ความคิดใด ๆ ?
Score:0
ธง br

พบว่าปัญหาเกิดขึ้นกับไฟล์ php.ini ถูกลบออก ปิดการใช้งาน_ฟังก์ชั่น="" คำสั่งและสคริปต์ Python ใช้งานได้ ดังที่ Gerald กล่าวถึงในความคิดเห็น ฉันไม่จำเป็นต้องเพิ่มสิ่งใดใน ซูโดเออร์ ไฟล์หรือเปลี่ยนสิทธิ์ไฟล์/ผู้ใช้นอกเหนือจากมาตรฐาน + x แอตทริบิวต์สิทธิ์ (หรือ 0755)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา