PHP shell_exec()、exec()、system()、passthru()如何使它们适用于所有命令?

PHP shell_exec()、exec()、system()、passthru()如何使它们适用于所有命令?,php,linux,linux-mint,Php,Linux,Linux Mint,在浏览器中运行.php文件时,我使用shell_exec、exec、system、passthru运行的一些命令不起作用 实际上,如果我执行shell命令/程序,没有问题,但如果我尝试运行一些程序,它就不起作用: system("sleep 5 && fswebcam -r 640x480 --jpeg 100 -D 5 -S 12 fswebcam.jpg"); shell_exec("sleep 5 && fswebcam -r 640x480 --jpeg

在浏览器中运行.php文件时,我使用shell_exec、exec、system、passthru运行的一些命令不起作用

实际上,如果我执行shell命令/程序,没有问题,但如果我尝试运行一些程序,它就不起作用:

system("sleep 5 && fswebcam -r 640x480 --jpeg 100 -D 5 -S 12 fswebcam.jpg");

shell_exec("sleep 5 && fswebcam -r 640x480 --jpeg 100 -D 5 -S 12 fswebcam.jpg");

exec("sleep 5 && fswebcam -r 640x480 --jpeg 100 -D 5 -S 12 fswebcam.jpg");

passthru("sleep 5 && fswebcam -r 640x480 --jpeg 100 -D 5 -S 12 fswebcam.jpg");

sleep命令可以工作,但fswebcam不能。例如,如果我尝试使用mplayer,它也会运行。为什么?

您可能应该在PHP中设置睡眠。并包括完整的路径,无论何处的fswebcam二进制生活。。。以及您希望捕获的图像所在的完整路径。另外,查找,这将让您捕获stderr,其中可能包含您可能丢失的错误消息…另外,在PHP中执行命令的用户是否具有执行此操作所需的权限?哦,很好@Jacob。Mint基于Ubuntu,所以它可能使用了一个安全限制层,它可能会正确地阻止二进制文件被调用,或者可能会阻止二进制文件正常工作。您可能需要检查服务器日志。您也可以使用system/shell_exec/exec/passthru捕获stderr,只需使用&2>1-使用它来获取错误消息。可能未找到fswebcam命令或某些错误,请使用&2>1。