命令
$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);
输出
is file: 1
Array
(
[0] => Error: Unable to connect or start own listener. Aborting.
)
这是上传脚本的一部分,在 Apache 下作为 www-data
运行..
作为 root
脚本在www-data
下可以运行,现在不行了? :-/
更新我
apt-get install sudo
sudo visudo # added "www-data ALL = NOPASSWD: /usr/bin/doc2pdf"
代码:
exec('sudo /usr/bin/doc2pdf -o '.$file.'.new '.$file.' 2>&1', $out);
print_r($out);
错误:
sudo: unable to resolve host dyntest-amd-3700-2gb
更新二
echo "127.0.1.1 $(hostname)" >> /etc/hosts
reboot
最佳答案
您可以使用 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);
关于php - doc2pdf - 无法连接或启动自己的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402851/