$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)
echo "127.0.1.1 $(hostname)" >> /etc/hosts
reboot
Run Code Online (Sandbox Code Playgroud)
您可以使用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)
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |