Tùy thuộc vào những gì bạn đang làm, system () hoặc popen () có thể hoàn hảo. Sử dụng system () nếu tập lệnh Python không có đầu ra hoặc nếu bạn muốn đầu ra của tập lệnh Python trực tiếp đến trình duyệt. Sử dụng popen () nếu bạn muốn ghi dữ liệu vào đầu vào chuẩn của tập lệnh Python hoặc đọc dữ liệu từ đầu ra chuẩn của tập lệnh Python trong php. popen () sẽ chỉ cho phép bạn đọc hoặc viết chứ không cho phép cả hai. Nếu bạn muốn cả hai, hãy kiểm tra proc_open () , nhưng với giao tiếp hai chiều giữa các chương trình, bạn cần phải cẩn thận để tránh bế tắc, trong đó mỗi chương trình đang chờ chương trình kia làm điều gì đó.
Nếu bạn muốn chuyển dữ liệu do người dùng cung cấp sang tập lệnh Python, thì điều quan trọng cần cẩn thận là chèn lệnh. Nếu bạn không cẩn thận, người dùng của bạn có thể gửi cho bạn dữ liệu như "; evilcommand;" và làm cho chương trình của bạn thực hiện các lệnh tùy ý trái với ý muốn của bạn.
Escapehellarg () và hidepeshellcmd () có thể giúp giải quyết vấn đề này, nhưng cá nhân tôi muốn xóa mọi thứ không phải là một nhân vật tốt được biết đến, bằng cách sử dụng một thứ như
preg_replace('/[^a-zA-Z0-9]/', '', $str)