Залежно від того, що ви робите, система () або popen () може бути ідеальною. Використовуйте system (), якщо сценарій Python не має вихідних даних, або якщо ви хочете, щоб вихідні дані скрипта Python переходили безпосередньо до браузера. Використовуйте popen (), якщо ви хочете записати дані на стандартний вхід сценарію Python або прочитати дані зі стандартного виводу сценарію Python у php. popen () дозволить вам лише читати чи писати, але не обидва. Якщо ви хочете і те, і інше, перевірте proc_open () , але при двосторонньому зв'язку між програмами потрібно бути обережним, щоб уникнути тупикових ситуацій, коли кожна програма чекає, поки інша щось зробить.
Якщо ви хочете передати дані, надані користувачем, сценарію Python, тоді головне, з чим слід бути обережним - це введення команд. Якщо ви не будете обережні, ваш користувач може надіслати вам дані на зразок "; evilcommand;" і змусьте програму виконувати довільні команди проти вашої волі.
escapeshellarg () і escapeshellcmd () можуть допомогти в цьому, але особисто мені подобається видаляти все, що не є відомим добрим персонажем, використовуючи щось на зразок
preg_replace('/[^a-zA-Z0-9]/', '', $str)