doc2pdf - 无法连接或启动自己的侦听器

cla*_*rkk 6 php linux debian

命令

$file = '/var/www/test.docx';
move_uploaded_file($uploaded_file, $file);
echo 'is file: '.is_file($file)."\n";

exec('/usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out);
print_r($out);
Run Code Online (Sandbox Code Playgroud)

产量

is file: 1
Array
(
    [0] => Error: Unable to connect or start own listener. Aborting.
)
Run Code Online (Sandbox Code Playgroud)

这是上传脚本的一部分,并www-data在Apache下运行.

单独的命令行可以从putty中正常工作 root

该脚本已经工作www-data,但现在它没有?: - /

更新我

apt-get install sudo
sudo visudo # added "www-data ALL = NOPASSWD: /usr/bin/doc2pdf"
Run Code Online (Sandbox Code Playgroud)

码:

exec('sudo /usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out);
print_r($out);
Run Code Online (Sandbox Code Playgroud)

错误:

sudo: unable to resolve host dyntest-amd-3700-2gb
Run Code Online (Sandbox Code Playgroud)

更新II

echo "127.0.1.1 $(hostname)" >> /etc/hosts
reboot
Run Code Online (Sandbox Code Playgroud)

Eug*_*Sue 5

您可以使用chown命令更改/ usr/bin/doc2pdf的所有者,或更改www-data用户的权限,允许以root身份运行命令而无需输入密码.为此,您必须编辑/ etc/sudoers文件.但最好不要直接编辑它.在linux中有一个用于此的工具:visudo.

$ sudo visudo

将其添加到文件的最后

www-data ALL = NOPASSWD:/ usr/bin/doc2pdf

保存文件,你就完成了.不要忘记更改php代码的这一行(在开头添加sudo):

exec('sudo /usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out);
Run Code Online (Sandbox Code Playgroud)