新建一个php文件(test.php)
将下面的代码进行粘贴到新建的PHP文件中
<?php
shell_exec("unoconv -f pdf test.odt");
?>
(1)在终端中执行php test.php,此时生成了test.pdf文件
(2)在web端输入链接访问test.php,发现此时test.pdf文件没有生成。这时可以有80%怀疑权限问题(且php并没有报错)
(3)进入test.php所在的目录,
将下面的代码进行粘贴到test.php文件中
<?php
print_r(shell_exec("ls"));
?>
在web端使用链接进行访问,发现可以运行的,这时有基本可以确定是权限的问题了
(4)那么错误在什么地方可以看到呢,在终端下运行下面的命令
find / -name auth.log
比如 /var/log/auth.log
(5)打开 auth.log找出问题所在可以发现报错为:www-data:user not in sudoers;............改怎么改呢
(6)本人是在虚拟机中进行测试的,现在讲讲这个解决方法
在终端下运行su root输入密码,这时你会发现不管你怎么输入密码均是错误的,那该怎么解决呢,不要急,听我慢慢讲来
在终端下输入su passwd 这时会提醒你输入密码,随便输入一个密码如:123456,回车再次确认下密码;此时的root密码为123456了
在终端下输入su root,输入刚刚设置的密码,你会发现你进入了root权限了,这时在终端下运行chmod u+w /etc/sudoers,
在终端下输入vim /etc/sudoers,修改文件,将下面的话添加到文件中
www-data ALL=(ALL) NOPASSWD: ALL;这边为啥是NOPASSWD:因为,你没有给www-data设置密码啊
在终端下分别运行chmod u-w /etc/sudoers,exit
(7)这时你再次在web使用链接运行test.php文件
<?php
shell_exec("unoconv -f pdf test.odt");
?>
哈哈:文件出来了