【发布时间】:2014-08-02 11:12:15
【问题描述】:
在我花费数小时处理的事情上,我需要你宝贵的帮助。 适用范围:在树莓派上运行的 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辅助| grep -e SongWebSocket.php -e USER 如果我以用户 pi 的身份从 shell 启动它,或者以 www-data 用户的身份从 sript 启动它。
期待您的帮助。提前致谢! 马可。
【问题讨论】:
标签: php linux apache raspberry-pi