【发布时间】:2013-03-06 13:25:20
【问题描述】:
我的其中一行 shell 命令没有执行,尽管其他类似的行工作。我正在使用基于 Ubuntu 12.04 的操作系统的 linux 机器上运行。我也试过用exec,还是不行。
我实际上在某个时候有这个工作,在那里我遇到了挂起的问题(等待命令输出),这就是我将输出重定向到 /dev/null 的原因。因此,在开发中的某些地方发生了一些变化。我们确实创建了一个要安装的 debian 包,并且我已经运行了该安装包,所以我想可能是在覆盖文件时权限发生了变化,所以我向所有用户/组/所有者添加了读/写/执行,但这也不起作用.
代码在这里:
if(isset($_POST['activateXML']))
{
if (videoConsistencyCheck())
{
`cp {$fileXML} /apps/video/xml.xml`;
`sudo /apps/video/vsss restart >/dev/null 2>&1 &`;
systemUnvalidate();
header('Location: index.php?app='.$_GET['app']);
die();
}
}
我知道 if 语句的第一行会被执行。这行代码在实际终端中运行良好,所以这也不是问题。我做了很多谷歌搜索,我只能找到一个没有答案的问题,任何建议都会有所帮助。
编辑:所以看起来不起作用的实际上是按预期调用命令,但在 bash 脚本中我调用的启动-停止守护进程不起作用
编辑 2:我制作了一个测试 php 文件并从终端运行代码,通过在命令中添加 sudo 修复了 start-stop-daemon 错误,但它在我的代码中仍然不起作用。我在按下提交按钮时调用此代码。
【问题讨论】:
-
正在运行的PHP用户是否对
/apps/video/vsss有执行权限? -
如上所述,我执行了“sudo chmod a+rwx /apps/video/vsss”。您是否建议我仍然需要添加特定用户?如果是这样,我将如何确定 PHP 代码将使用的用户?似乎是这种情况,它只是没有执行权限
-
没有运行的指标是什么? 正在发生什么?
-
运行脚本后,输出视频源的程序将以新设置重新启动,以便轻松告诉我在新设置中禁用视频输出。所以如果要执行,我就再也看不到视频了
-
运行视频进程的用户是谁?我敢打赌它与运行命令的用户不同。
标签: php process permissions exec shell-exec