PHP系统调用函数没有正确导出变量

Kay*_*son 13 php apache bash

我使用任务后台处理程序来排队了一些视频编码任务(见:http://manpages.ubuntu.com/manpages/artful/en/man1/tsp.1.htmlhttp://vicerveza.homeunix.net/~viric/soft/ts /)

为了选择特定队列(而不是默认的每用户队列),二进制文件要求您设置指向套接字的环境变量.就我而言:TS_SOCKET=/tmp/reencode.socket.然后运行tsp显示该特定队列的状态.

此命令在终端中工作,与任何用户一样: export TS_SOCKET=/tmp/reencode.socket ; tsp

我想创建一个显示此状态的基于Web的状态实用程序.但是,在apache2上使用php,使用exec()相同的命令调用bash脚本不起作用.putenv('TS_SOCKET=/tmp/reencode.socket'); echo exec('tsp');我也没试过echo `export TS_SOCKET=/tmp/reencode.socket ; tsp`

运行passthru('whoami')在服务器上显示,它的运行作为用户www-root,Apache服务器的用户.如果我以该用户身份登录并运行该命令,则可以正常工作.

有趣的是,如果我运行PHP的交互式shell( php -a),我可以做任何上述PHP代码的,它工作得很好,所以它似乎是与Apache一些互动.

这一切都在Apache 2.4.27上使用PHP 7.1.11在Ubuntu 17.10上运行

Kay*_*son 6

原来问题不是环境变量的设置,而是访问套接字.由于apache正在运行systemd,它有一个孤立的/tmp(参见https://unix.stackexchange.com/questions/345122/why-php-can-not-see-tmp-files)与/tmp我所在的地方不一样插座.移动位置使一切工作正常!