shell_exec() could be used instead, but proc_open() has the added benefit of runing commands directly (if passed as array), without forking a shell. Also, shell_exec returns only the command output, and there is no way to capture return codes.
Description
Languages
Go
96%
HTML
1.5%
Just
1.2%
Dockerfile
1%
Nix
0.3%