gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:55 25 4
gpt4 key购买 nike

我需要你在我花了几个小时处理的事情上提供宝贵的帮助。范围:在树莓派上运行的 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 启动它。

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

最佳答案

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

关于php - 从 php 页面启动在服务器上运行的 php 脚本(并打开套接字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com