从PHP页面启动服务器上运行的PHP脚本(并打开套接字)


launching php script running on server (and opening sockets) from a php page

我需要你的宝贵帮助,我花了几个小时在这件事上。范围:在树莓派上运行Apache2和PHP;前提:我对Linux环境的一点了解!

目标:启动一个长期运行的php脚本,打开套接字,从另一个php脚本作为网页运行。换句话说,应用程序是一个聊天,我需要启动php服务器脚本的网页,为我的方便。

问题:如果我从控制台运行它,记录为"pi",使用以下命令

php -q /var/www/chatSocket.php > /var/www/tmp/socketProcessOutput.txt 2>&1 & echo $!

它像一个魅力,但如果它试图从脚本中这样做,使用以下命令(不要介意连接的字符串和对变量的输出赋值-删除它们没有区别):

$result .= "Result of pkill (killed process): " .shell_exec('sudo pkill -f SongWebSocket.php') ."'n";
$result .= "Launching new  process: id returned:". shell_exec('php -q /var/www/chatSocket.php > /var/www/tmp/socketProcessOutput.txt 2>&1 & echo $!')  ."'n";
$result .= "Checking running SongWebSocket.php process:"  ."'n";
$result .= shell_exec('ps -A aux| grep -e SongWebSocket.php -e USER')  ."'n";

. .它不工作(它似乎启动了脚本,但套接字没有打开)。

知道为什么会这样吗?

还有,这可能是我对Linux的一点了解,为什么我从命令中得到不同的输出//SongWebSocket.php如果我以用户pi的身份从shell启动它,或者以www-data用户的身份从脚本启动它。

我期待着你的帮助。提前感谢!马可。

我猜www-data用户没有权限。为什么不为每个shell_exec行添加"sudo"呢?(sudo以root权限启动程序)。它不是很漂亮,也不安全,但它可能在你的本地家庭网络上工作。Sudo PHP…sudo ps -A aux等。此外,您应该确保php的safe_mode是关闭的。你可以通过添加phpinfo();PHP代码