【问题标题】:doc2pdf - unable to connect or start own listenerdoc2pdf - 无法连接或启动自己的监听器
【发布时间】:2015-09-04 16:39:16
【问题描述】:

命令

$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

【问题讨论】:

  • -v 选项添加到您的doc2pdf 命令并检查$out 的输出。此外,sudo 通常需要一个 tty。检查/etc/sudoers 文件中的Defaults requiretty 选项。请参阅此 StackExchange 帖子:unix.stackexchange.com/a/122624

标签: php linux debian


【解决方案1】:

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

$sudo visudo

将此添加到文件的最后

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

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

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

【讨论】:

【解决方案2】:

以 root 身份连接到 ssh

sudo visudo

添加

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

并保存:wq

【讨论】:

  • 运行 visudo 时返回错误.. 已更新我的问题
  • 您似乎是在建议进行文件编辑,对吧?所以解释一下。也许 OP 没有您在示例中使用的相同程序。
猜你喜欢
  • 2020-09-21
  • 2019-06-11
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多