【问题标题】:Centos: TERM environment Variable Not SetCentos:未设置 TERM 环境变量
【发布时间】:2014-02-10 14:18:57
【问题描述】:

我正在开发一个允许用户上传视频的移动应用程序,上传后视频被转换为 mp4 格式,我为此使用了一个 shell 脚本,该脚本在我们的最后一个服务器上运行良好,但我们切换了服务器,现在它已经停止工作,正在打印 apache 的日志文件。

[Tue Jan 21 00:57:37.003944 2014] [:error] TERM environment variable not set.
[Tue Jan 21 00:57:37.148531 2014] [:error] ./script.sh: line 3: ffmpeg: command not found
[Tue Jan 21 00:57:37.148794 2014] [:error] script.sh: line 4: ffmpeg: command not found

script.sh的内容是

#!/bin/bash -p
clear
ffmpeg -i $filename -strict experimental -ar 22050 converted.mp4<br>
ffmpeg -itsoffset -1 -i  converted.mp4 -vframes 25 -filter:v scale="min(500\, iw):-1"  thumbnail.png

我正在使用 php 调用脚本形式

shell_exec("script.sh 52567afa374c61381399290.mp4");

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 几件事。你为什么要做clear (猜测TERM 错误来自这里)如果你实际登录服务器并运行type ffmpeg 会得到什么(猜测它可能不存在或在它使用的任何路径中都找不到)?另外,“$filename”是否设置为任何值?
  • ffmpeg 已安装并正确配置,当我从 SSH 运行相同的命令时,命令成功执行,清除只是在执行前清除控制台,我将尝试删除它并再次运行。跨度>
  • 如果只有 TERM 错误与清除有关,可能不会改变任何东西。也可以尝试使用ffmpeg 的完整路径,使用shell_exec("bash script.sh 52567afa374c61381399290.mp4");,我认为您需要将$filename 切换为"$1"(尽管我对这里的注入有些厌倦)
  • 感谢 BrowSlow,使用 ffmpeg 的完整路径做到了 :)
  • 没问题,很高兴它成功了。

标签: php bash shell video ffmpeg


【解决方案1】:

错误是

  • clear 需要一个终端来处理,因此会导致 TERM 错误(bash -p 通常应该修复它,但 clear 无论如何都不需要)
  • shell_exec 期间未正确设置路径,因此需要ffmpeg 指定完整路径,以便 bash 可以找到它。

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 2017-10-30
    • 2017-08-26
    • 1970-01-01
    • 2015-06-18
    • 2013-10-25
    • 2019-03-24
    • 2012-01-18
    • 2012-01-02
    相关资源
    最近更新 更多