标签: shell-exec

查询音频/视频文件以获取信息

我想要一个PHP函数,它接收文件的路径并返回有关它的信息数组.PHP文件可以调用FFmpeg.

返回的数据应该是这样的

Array(
    [mime]          => video/ogg
    [container]     => Ogg
    [video]         => Theora
    [audio]         => Vorbis
    [duration]      => 20.3 // in seconds
)

Array(
    [mime]          => audio/ogg
    [container]     => Ogg
    [video]         =>
    [audio]         => FLAC
    [duration]      => 3
)

Array(
    [mime]          => image/gif
    [container]     => GIF
    [video]         => Animated GIF
    [audio]         =>
    [duration]      => 2
)

Array(
    [mime]          => video/webm
    [container]     => WebM
    [video]         => VP8
    [audio]         => Vorbis
    [duration]      => 900.7
)

false // not a media file
Run Code Online (Sandbox Code Playgroud)

我从未使用FFmpeg或使用PHP的shell_exec() …

php ffmpeg shell-exec

5
推荐指数
1
解决办法
8311
查看次数

C#等同于shell_exec

如何通过shell执行命令并使用C#将完整输出作为字符串返回?

相当于PHP的shell_exec().

谢谢,先进.

.net c# cmd shell-exec

5
推荐指数
2
解决办法
1664
查看次数

打开adobe reader打印PDF的批处理文件没有结束/关闭

我在一个批处理文件中有以下代码,由 PHP 脚本调用shell_exec()

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" 
/t "D:\xampp\htdocs\instrument\app\webroot\Repair Tickets\%1.pdf"
\\hnurenfp01\Accounts_FS-1128MFP
Run Code Online (Sandbox Code Playgroud)

参数 %1 是作为参数从 PHP 脚本发送到批处理文件的文件名。

观察到的行为:

  • PHP 页面成功调用具有正确参数的批处理文件
  • AcroRd32.exe 的两个实例在服务器上静默启动
  • PDF 文件打印到网络打印机
  • AcroRd32.exe 实例未结束/关闭
  • 批处理文件保持运行(直到手动结束 AcroRd32.exe 进程)
  • PHP 脚本继续执行,因此阻止客户端计算机执行任何进一步操作

预期行为:

  • PHP 页面成功调用具有正确参数的批处理文件
  • AcroRd32.exe 的两个实例在服务器上静默启动
  • PDF 文件打印到网络打印机
  • AcroRd32.exe 实例结束/关闭
  • 批处理脚本完成(这反过来应该释放 PHP 脚本)
  • PHP 脚本继续并最终结束,以允许最终用户继续他们的工作

失败的解决方案:

  • 在批处理文件中使用 TASKKILL 在打印后结束 AcroRd32.exe 进程,但即使使用 /F(强制)标志,AcroRd32.exe 仍保持打开状态。当我手动结束 AcroRd32.exe 进程时,批处理文件将继续,然后执行 TASKKILL 行,这当然会返回“找不到进程”错误,因为它不再存在。因此,打印后控制权似乎没有返回到批处理文件,它仍然保留在 AcroRd32.exe 中。

有谁知道如何在 PDF 打印后关闭 Adob​​e Reader?

php batch-file shell-exec

5
推荐指数
1
解决办法
1万
查看次数

如何为php exec或shell_exec设置$ PATH

我已经将PATH设置为运行ant并且它正在处理putty但是在php exec上它返回sh ant命令未找到我试图通过导出设置PATH PATH =/usr/ant/bin

php ant centos exec shell-exec

5
推荐指数
2
解决办法
5819
查看次数

如何从 php 以管理员身份运行 cmd 命令

我正在尝试学习 php shell_exec() 函数,我相信它使我们能够从 php 脚本中运行 cmd 命令。但是在我的系统中,当我通常打开命令提示符并输入命令时,例如,ipconfig它说:

'ipconfig' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

因此,为了避免这种情况,我必须右键单击命令提示符并选择“以管理员身份运行”,一切正常。

现在我的问题是,当我尝试ipconfig从 php 脚本内部运行类似的命令时,我得到与上面给出的相同的错误。有办法解决这个问题吗?我的意思是有没有办法从 php 内部以管理员身份运行 cmd 命令?

我在下面附上了示例代码,以便您可以编辑它并帮助我。提前致谢。

这是代码:

<?php
$output = shell_exec('ipconfig 2>&1');
echo $output;
?>
Run Code Online (Sandbox Code Playgroud)

输出(我希望避免)

“ipconfig”不被识别为内部或外部命令、可操作程序或批处理文件。

php shell-exec

5
推荐指数
0
解决办法
7083
查看次数

从 PHP 脚本运行 PHP 脚本的最佳实践是什么?

我会使用以下代码:

$SERVER_PATH = dirname(__FILE__);
shell_exec($PHP_LOCATION.' '.$SERVER_PATH."/script.php?k1=v1&k2=v2 > /dev/null 2>/dev/null &");
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • $PHP_LOCATION应包含 PHP 的路径,

  • $SERVER_PATH- 是当前工作目录(幸运的是要运行的脚本位于同一目录中),

  • > /dev/null 2>/dev/null &添加以使此调用异步(取自Asynchronous shell exec in PHP Question)

这段代码有两个问题:

  1. 据我记得?k1=v1&k2=v2仅适用于网络调用,因此在这种特殊情况下参数不会传递给脚本。

  2. 我真的不知道如何初始化$PHP_LOCATION变量以使其灵活并在大多数主机上工作。

我对这两个问题进行了一些研究:

要解决1 ,建议使用-- 'parameters_string',但也建议修改脚本来解析参数字符串,这看起来有点笨拙。有更好的解决方案吗?

为了解决2,我找到了一个可以使用的解决方案PHP_BINARY,但这是一个 PHP 5.4+ 的情况(我使用的是 5.3)。但最初的问题是运行与原始脚本版本相同版本的 PHP。那么对我来说(因为我只使用 PHP 5.3)可能有解决方案吗?

编辑0

让我解释一下为什么我坚持这种奇怪的(对于 PHP)方法:

这些 PHP 脚本应该彼此分开:

  • 其中之一将分析数据并

  • 第二个将生成 PNG 图形作为最终结果。

这些脚本并不打算同时运行,这意味着第二个脚本可以按照自己的计划运行,只需要在其数据准备就绪时运行(由第一个脚本完成)。因此,不应将任何数据从第二个脚本(子脚本)传回第一个脚本(父脚本)。

编辑1

从大多数评论来看,主要讨论是分叉方向。不过,我想强调一下最初问题中提出的第 1点和第 2 点。我有一些理由按照我指出的方式解决任务,并且我试图指出所有这些原因。如果我的某些观点看起来很奇怪,请发表评论 - …

php linux shell-exec

5
推荐指数
1
解决办法
1007
查看次数

php shell_exec 返回 null

我想php ../cat1/index.php gr_s2/3/gr-n40 1200通过 php 运行命令。shell_exec 返回 NULL 作为结果,但是当我在 cmd 上尝试该命令时,输出显示正确。

php 和 shell_exec 中发生了什么?

注意:具有不同参数的命令(例如:)php ../cat1/index.php gr_s2/3/gr-n40 800在(php 和 cmd)中都可以正常工作。

php command cmd shell-exec

5
推荐指数
1
解决办法
1万
查看次数

PHP内置Web服务器运行速度非常慢

我是 PHP 的初学者,正在制作一个网站,在网页上显示 Linux 系统的基本系统信息(CPU 使用情况、内存使用情况等)。对于 Web 服务器,我使用内置的 Web 服务器:

php -S 192.168.1.36:8000
Run Code Online (Sandbox Code Playgroud)

前端使用Bootstrap和JS。我正在使用的 php 脚本使用服务器发送事件(从此处了解它)将 CPU 使用情况、内存使用情况和磁盘使用情况(它从 shell_exec() 方法获取这些信息)发送到前端,大约每 2 秒一次。

问题是,该网站的刷新速度非常慢,有时,第一次加载也非常慢。当我查看 JS 控制台时,我注意到即使在我按下刷新按钮后,服务器仍在将数据流式传输到网页。难道是因为连接尚未关闭?

php webserver shell-exec server-sent-events

5
推荐指数
1
解决办法
3863
查看次数

PHP shell_exec() 不起作用,但命令可以从控制台运行

我正在按照本指南通过 Git 部署我的网站,但在使用 PHP shell_exec() 或 exec() 时遇到了一些问题。部署脚本运行多个命令,例如gitwhoamiwhich gitrsync等。当我以服务器用户身份登录时,所有这些命令都有效。

然而,当我点击应该运行这些命令的 php 脚本时,它们不起作用。 whoami: command not found

git: command not found

rsync: command not found

which: command not found

我可以通过提供命令的路径(例如/usr/bin/whoami=> myuser)来解决此问题,但某些命令/usr/bin/which rsync仍然不起作用。(那个给了我/usr/bin/which: no rsync in (/bin)

这些对于让项目正常运行并不重要,但我仍然想知道是否存在某种权限问题或我做错了什么。有人对这里有任何见解吗?

php linux command-line shell-exec

5
推荐指数
1
解决办法
5783
查看次数

shell_exec 没有给出任何结果,并且没有做任何事情

所以我有一个问题,在我看来应该很容易解决。我想通过 ssh 连接到服务器,我已经这样做了很多次,然后让 shell 执行,我也已经这样做了很多次,但它不起作用。

我正在使用的代码

<?php
            $ip = '1.2.3.4';
            $cmd = "ssh user@".$ip;
            $result = shell_exec($cmd." 'sudo /bin/systemctl stop wildfly.service'");
            echo "<pre>output: $result</pre>";
            echo "<div class='alert alert-success'><strong>SUCCESS</strong><br>Wildfly node has now restarted</div>"; 
?>
Run Code Online (Sandbox Code Playgroud)

直接从终端运行命令

ssh user@1.2.3.4 sudo /bin/systemctl stop wildfly.service
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是在 php 中运行它不会给我任何结果,而且它也没有做任何事情。

有人可以指导我发现我的 shell_exec 做错了什么吗?

提前致谢!

php shell-exec

5
推荐指数
1
解决办法
2816
查看次数