【问题标题】:launching php script running on server (and opening sockets) from a php page从 php 页面启动在服务器上运行的 php 脚本(并打开套接字)
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2017-09-08
      • 2019-04-08
      相关资源
      最近更新 更多