$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
运行
单独的命令行可以在putty中正常工作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
答案 0 :(得分:5)
您可以使用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);
答案 1 :(得分:0)
以root身份连接到ssh
sudo visudo
添加
www-data ALL =(ALL)NOPASSWD:/ usr / bin / doc2pdf
并保存:wq