Linux 通过apache服务器的pm2

Linux 通过apache服务器的pm2,linux,apache,pm2,Linux,Apache,Pm2,我想通过apache服务器控制我的pm2应用程序。我已经通过bash脚本和php尝试过了。这是我的index.php: <html> <head> <meta c </head> <?php if (isset($_POST['RightOPEN'])) { exec("/home/pi/startmm.sh"); } if (isset($_POST['LeftOPEN'])) { exec("/home/pi/channel4.sh");

我想通过apache服务器控制我的pm2应用程序。我已经通过bash脚本和php尝试过了。这是我的index.php:

<html>
<head>
<meta c
</head>


<?php
if (isset($_POST['RightOPEN']))
{
exec("/home/pi/startmm.sh");
}
if (isset($_POST['LeftOPEN']))
{
exec("/home/pi/channel4.sh");
}
?>
<form method="post">
<button name="LeftOPEN">Channel 4</button>&nbsp;
<button name="RightOPEN">Mirror</button><br>



</form>
</html>
和startmm.sh:

#!/bin/bash
pm2 start mm
有人能帮忙吗?它似乎不起作用,我的apache日志中出现以下错误:

[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
[PM2][Initialization] Defaulting to /etc/.pm2
Error: EACCES: permission denied, mkdir '/etc/.pm2'
    at Object.mkdirSync (fs.js:757:3)
    at sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:71:13)
    at Function.sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:77:24)
    at module.exports.Client.initFileStructure (/usr/lib/node_modules/pm2/lib/Client.js:132:25)
    at new module.exports (/usr/lib/node_modules/pm2/lib/Client.js:37:8)
    at new API (/usr/lib/node_modules/pm2/lib/API.js:107:19)
    at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
Error: EACCES: permission denied, mkdir '/etc/.pm2'
[PM2][Initialization]未设置环境变量HOME(Linux)或HOMEPATH(Windows)!
[PM2][初始化]默认为/etc/.PM2
错误:EACCES:权限被拒绝,mkdir'/etc/.pm2'
在Object.mkdirSync(fs.js:757:3)
同步时(/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:71:13)
在Function.sync(/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:77:24)
位于module.exports.Client.initFileStructure(/usr/lib/node_modules/pm2/lib/Client.js:132:25)
在new module.exports(/usr/lib/node_modules/pm2/lib/Client.js:37:8)
在新的API中(/usr/lib/node_modules/pm2/lib/API.js:107:19)
反对。(/usr/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
at模块编译(内部/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:789:10)
at Module.load(内部/modules/cjs/loader.js:653:32)
错误:EACCES:权限被拒绝,mkdir'/etc/.pm2'

您可以从
权限拒绝,mkdir'/etc/.pm2'
中看到这是一个权限错误。当您从web浏览器调用shell脚本时,您很可能需要授予
www-data
用户权限,以根用户身份执行脚本

如果编辑sudoers文件,很可能是:
sudo vi/etc/sudoers
,并在
www-data-ALL=(root)NOPASSWD:/full/path/to/thescript.sh
末尾添加类似的行,这将允许从web浏览器以root用户的身份调用shell脚本,这意味着它不应该无法创建任何目录

您可以为每个单独的脚本添加一行(推荐)或允许所有
www-data
以root(危险)身份执行所有脚本,但此处-
www-data-all=(root)NOPASSWD:all

别忘了重新启动服务器
sudo服务apache2 restart


希望这有帮助。

谢谢你的回答。我做了你在sudoers档案里要求我做的事。然而,它对我仍然不起作用。我仍然会遇到相同的错误,下面是一些新错误:
[PM2][Initialization]未设置环境变量HOME(Linux)或HOMEPATH(Windows)![PM2][Initialization]默认为/etc/.PM2错误:EACCES:permission denied,mkdir'/etc/.PM2'
可能不是最好的做法,但尝试一下这个
sudo mkdir/etc/.PM2
然后
sudo chmod+x-R/etc/.PM2
在做了你让我做的事情后,我仍然不喜欢它<代码>错误:EACCES:permission denied,mkdir'/etc/.pm2/modules'Hmm您可以看到现在的情况略有不同。尝试
sudo chmod+x/etc/.pm2-R
Ok,尝试这个
sudo npm安装-g--unsafe perm=true--allow root
[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
[PM2][Initialization] Defaulting to /etc/.pm2
Error: EACCES: permission denied, mkdir '/etc/.pm2'
    at Object.mkdirSync (fs.js:757:3)
    at sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:71:13)
    at Function.sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:77:24)
    at module.exports.Client.initFileStructure (/usr/lib/node_modules/pm2/lib/Client.js:132:25)
    at new module.exports (/usr/lib/node_modules/pm2/lib/Client.js:37:8)
    at new API (/usr/lib/node_modules/pm2/lib/API.js:107:19)
    at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
Error: EACCES: permission denied, mkdir '/etc/.pm2'