我想要一个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 脚本调用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 脚本发送到批处理文件的文件名。
观察到的行为:
预期行为:
失败的解决方案:
有谁知道如何在 PDF 打印后关闭 Adobe Reader?
我已经将PATH设置为运行ant并且它正在处理putty但是在php exec上它返回sh ant命令未找到我试图通过导出设置PATH PATH =/usr/ant/bin
我正在尝试学习 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”不被识别为内部或外部命令、可操作程序或批处理文件。
我会使用以下代码:
$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)
这段代码有两个问题:
据我记得?k1=v1&k2=v2仅适用于网络调用,因此在这种特殊情况下参数不会传递给脚本。
我真的不知道如何初始化$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 ../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 的初学者,正在制作一个网站,在网页上显示 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 控制台时,我注意到即使在我按下刷新按钮后,服务器仍在将数据流式传输到网页。难道是因为连接尚未关闭?
我正在按照本指南通过 Git 部署我的网站,但在使用 PHP shell_exec() 或 exec() 时遇到了一些问题。部署脚本运行多个命令,例如git、whoami、which git、rsync等。当我以服务器用户身份登录时,所有这些命令都有效。
然而,当我点击应该运行这些命令的 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))
这些对于让项目正常运行并不重要,但我仍然想知道是否存在某种权限问题或我做错了什么。有人对这里有任何见解吗?
所以我有一个问题,在我看来应该很容易解决。我想通过 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 做错了什么吗?
提前致谢!
shell-exec ×10
php ×9
cmd ×2
linux ×2
.net ×1
ant ×1
batch-file ×1
c# ×1
centos ×1
command ×1
command-line ×1
exec ×1
ffmpeg ×1
webserver ×1