php - 如何在php中使用系统命令?
问题描述
我正在编写如下所示的 PHP 代码,其中mp4 到 mp3 的转换发生在 Line B。
我在系统命令后添加了 if 块,以便在转换完成后在网页上打印转换完成 ,但它似乎不起作用。
php代码:
if (isset($_POST['id']))
{
for($i=0; $i <count($mp4_files); $i++) {
if($i == $_POST['id']) {
$f = $mp4_files[$i];
$parts = pathinfo($f);
switch ($parts['extension'])
{
case 'mp4' :
$filePath = $src_dir . DS . $f;
print_r($f); // Line A
system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result); // Line B
if($result)
{
echo "Conversion Completed";
}
}
}
}
}
问题陈述:
我想知道我应该在上面的 PHP 代码中进行哪些更改,以便在转换完成后;在网页上,它应该打印Conversion Completed
.
解决方案
您可以使用shell_exec
来获取返回值,然后将其放入这样的 if 语句中
$output = shell_exec('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3');
if ($output) {
echo "Conversion Completed!";
// or redirect here
}
此外,请确保在您的输入暴露于 CLI 界面时对其进行清理。
推荐阅读
- c - 检查 sqlite3 表列是否已填充
- flutter - 如何在同步融合条形图中放置自定义形状的条形图,颤动?
- python - 无法覆盖 Django 3.0 中的管理模板
- php - 如何在 Docker php 映像中安装 pdo_odbc
- arrays - 如何使用 Swift 更新数组中所有元素的特定属性值
- angular - 从 Angular 8 升级到 Angular 9 - 错误
- python - 在peewee中跨多个数据库使用多个M2M关系
- coldfusion - Adobe Coldfusion 错误:找不到应用程序。null
错误发生在-1行 - c# - 为什么ubuntu中的NET Core 3.1 BackgroundWorker不能访问环境变量?
- android - 无法弄清楚如何让协程正常工作以将数据插入 Room 数据库