Điểm:1

Không thể chạy tập lệnh python từ PHP

lá cờ br

Câu hỏi cụ thể này đã được hỏi rất nhiều lần với những gợi ý tuyệt vời nhưng việc Người hỏi đột ngột từ bỏ không thực sự hữu ích vì họ không bao giờ bận tâm quay lại để nói điều gì đã hiệu quả (giả sử rằng cuối cùng thì nó cũng phải hiệu quả)

Tôi đang cố chạy tập lệnh python từ PHP nhưng không được. Môi trường: PHP 7.3, Python 3.8, CentOS 7, Apache 2.4, Bluehost VPS.

  • Đã thử cả hai giám đốc điều hànhshell_exec

  • apachectl -S tiết lộ máy chủ apache đang chạy dưới dạng không ai:không ai

  • Thêm không ai trong sudoer sử dụng không ai TẤT CẢ=(TẤT CẢ) NOPASSWD: /etc/bin/python3

  • Đã thêm quyền Thực thi vào tập lệnh Python và thay đổi chủ sở hữu cho bất cứ ai (giống như apache) ls -l thử nghiệm.py cho -rwxr-xr-x 1 không ai cả

  • Bản thân tập lệnh Python chạy tốt từ trình bao.

Đây là mã của tôi:

<?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>";
?>

Kịch bản trăn:

#!/usr/bin/env python3
nhập khẩu hệ thống
in ("Xin chào")
sys.exit(8)

Khi tôi chạy tệp PHP từ trình duyệt, tôi hoàn toàn không nhận được gì. Tôi sẽ đánh giá cao bất kỳ sự giúp đỡ nào trong việc giải quyết vấn đề này.

lá cờ in
Mã của bạn làm việc cho tôi. Kiểm tra cài đặt httpd của bạn. tăng mức độ chi tiết của nhật ký nếu cần.
lá cờ in
Bạn không cần cấu hình sudo; bạn không cần đặt tệp .py thành tệp thực thi, vì bạn cung cấp tệp đó làm tham số cho tệp nhị phân python3; python3 có thể được thực thi bởi mọi người dùng.
lá cờ cn
`/etc/bin/python3`? bạn có chắc chắn về tên tệp đó không?
Rocky avatar
lá cờ br
@DanilaVershinin Bắt tốt. `whereis python3' cho 'python3: /usr/bin/python3` Vẫn không hoạt động
Rocky avatar
lá cờ br
@GeraldSchneider Cảm ơn bạn đã chỉnh sửa câu hỏi, giờ trông thật hoàn hảo. Tôi nên xem gì trong tệp cấu hình apache để chạy python từ trình bao? Tôi đã kiểm tra tệp error_log của Apache, không có gì ở đó. Làm cách nào để tăng mức độ chi tiết của nhật ký? Tôi nghĩ rằng tôi đã có tối đa.
Rocky avatar
lá cờ br
@GeraldSchneider Vấn đề dường như vẫn tồn tại nhưng theo một cách khác. PHP có thể chạy tập lệnh từ máy chủ của tôi, ngoại trừ thư mục đang chạy trang Wordpress. Tôi đã tìm mọi nơi để xem điều gì có thể ghi đè các lệnh php.ini mặc định nhưng không thể. Bất kỳ ý tưởng?
Điểm:0
lá cờ br

Nhận thấy rằng sự cố xảy ra với tệp php.ini, đã xóa disable_functions="" chỉ thị và tập lệnh Python đã hoạt động. Như Gerald đã đề cập trong các bình luận, tôi không cần thêm bất cứ thứ gì vào sudoers tệp hoặc thay đổi quyền/người dùng tệp khác với tiêu chuẩn +x thuộc tính quyền (hoặc 0755)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.