从php页面启动在服务器上运行的php脚本(以及打开套接字)

时间:2014-08-02 11:12:15

标签: php linux apache raspberry-pi

在我花费数小时的时间里,我需要你的宝贵帮助。 范围:在覆盆子pi上运行的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的一点知识,为什么我从命令中得到了一个不同的输出 ps aux | grep -e SongWebSocket.php -e USER 如果我从shell,用户pi或sript,作为www-data用户启动它。

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

1 个答案:

答案 0 :(得分:0)

www-data用户没有我猜的权限。为什么不为每个shell_exec行添加“sudo”? (sudo以root权限启动程序)。它不漂亮而且不安全,但它可能适用于您本地的家庭网络。 sudo php ... sudo ps -A aux等。另外你应该确保php safe_mode已关闭。你可以通过添加phpinfo()来看到;你的PHP代码