基本环境:ffmpeg安装在usr/local/bin/ffmpeg
使用函数:exec

在检查exec在disble_functions没有禁用,safe_model也关闭了,ffmpeg也加入全局变量
在终端上测试命令没有问题,可php用exec执行就出现127,郁闷中。
127.jpg

<?php
exec("ffmpeg -version",$log,$ffmpeg_status);
echo $ffmpeg_status; //返回127
print_r($log); //返回空白
?>

猜测:全局变量的所有者和所有组可能和应用的用户不一致,linux本身的安全机制受影响,可能不允许这么执行外部的依赖程序命令。

假设:不用全局变量,直接找到该程序的安装路径,直接调用看是否可行?
/usr/local/bin/ 为ffmpeg安装的路径
测试效果:

<?php
exec("/usr/local/bin/ffmpeg -version",$log,$ffmpeg_status);
echo $ffmpeg_status; //返回0
print_r($log); //返回字符串
?>

总结:执行外部命令 /usr/local/bin/ exec可行 记之

1-确保环境已经部署SSL模块

//检查是否安装ssl
httpd -M | grep ssl
//安装mod和openssl
yum install openssl
yum install mod_ssl

2-检查和启动ssl

cd /etc/httpd/conf.d/

3-引入ssl配置,在http.conf去掉下面的注释
Include conf/extra/httpd-ssl.conf

4-虚拟vhost配置

<VirtualHost *:443>
DocumentRoot /home/www/wwwroot/zhibo
ServerName zhibo.kinmor.com:443
SetEnv no-gzip
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/kinmor.com/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/kinmor.com/privkey.pem"
    <Directory /home/www/wwwroot/zhibo>
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Require all granted
        DirectoryIndex index.php index.html index.htm
    </Directory>
</VirtualHost>

5-重启httpd

service httpd restart

微信QQ浏览器对启用GZIP的网页地址包括多媒体地址解析不了,造成无法获取到正确的视频地址,返回【视频解析异常,请重试】

下面记录本人的解决办法:

对该站点禁用gzip

SetEnv no-gzip

找到站点域名配置所在的目录,这里是apache的conf/etc/v_host/下的XX.conf

ServerName ...
SetEnv no-gzip

实例见下图:

17.jpg

最近小鱼哥要做微信内置浏览器播放的小视频,o(︶︿︶)o 唉,微信和QQ自带的浏览器居然【解析视频异常,请重试】h264编码的MP4,经过多方打探和测试,发现地址是https就可以播放。这个应该跟微信的安全机制有关,没办法,只能将站点部署成https啦。可ssl证书卖得好贵哦,幸好在wdcp和lamp等论坛,发现let's Ensencrypt和塞班可以申请免费的SSL,就是麻烦点要续期,好了废话不多说,直接上干货,下面介绍在linux(centos6.4 64bit)下的申请。

1、下载letsencrypt

git clone https://github.com/letsencrypt/letsencrypt

01.jpg
2、打开目录letsencrypt

cd letsencrypt

3、检查和验证(这里可能会触发安装python)

./certbot-auto --help all

02.jpg
4、申请证书,将下面的邮箱和域名换成你的

./certbot-auto certonly --standalone --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com

03.jpg

这里我安装时候出现80端口占用,所以多了小插曲

停止httpd

service httpd stop

04.jpg
5、再次申请证书
./certbot-auto certonly --standalone --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com
05.jpg
重启httpd
service httpd start
06.jpg

6、申请成功后,/etc/letsencrypt/live/ldbzx.com(这个域名和上面的一致)下面会出现域名证书
07-1.jpg

这里就代表申请成功了,至于怎么部署看小鱼哥另外一篇文章。
07.jpg

说明:Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
./certbot-auto certonly --renew-by-default --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com