Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux中使用php将ppt或pptx转换为pdf_Php - Fatal编程技术网

在linux中使用php将ppt或pptx转换为pdf

在linux中使用php将ppt或pptx转换为pdf,php,Php,我想在linux中用php将ppt或pptx转换为pdf,我使用以下命令 使用LibreOffice: exec('soffice --headless --convert-to pdf:"draw_pdf_Export" /home/test/public_html/converted/presentation1.ppt',$o1,$r1); 使用OpenOffice: exec("/usr/bin/openoffice.org -f pdf /home/yocook/public_html

我想在linux中用php将ppt或pptx转换为pdf,我使用以下命令

使用LibreOffice:

exec('soffice --headless --convert-to pdf:"draw_pdf_Export" /home/test/public_html/converted/presentation1.ppt',$o1,$r1);
使用OpenOffice:

exec("/usr/bin/openoffice.org -f pdf /home/yocook/public_html/converted/test.doc --outdir /home/yocook/public_html/converted",$output1,$ret1);
它们都返回0,这应该是真值,但我在输出目录中找不到转换的pdf文件。我确实检查了文件夹权限,并将其设置为755和777,但目录中仍然没有写入任何文件

  • 我的Linux版本:2.6.32
  • PHP版本:5.3.13

如果您通过Web服务器访问它,您的Web服务器wwwrun可能没有足够的权限查看yocook目录

尝试使用以下命令从终端执行php文件:
php convert.php
(其中convert.php是文件名)

如果它成功地工作,那么这是一个权限问题,您应该为您的文件使用公共临时目录。 如果仍然不起作用,请直接在终端中尝试这些命令,看看是否出现任何错误;如果工作正常,请尝试
su wwwadmin
,并以wwwadmin的形式执行命令,看看会发生什么


如果仍然有效,请尝试在php.ini中查看是否允许exec命令。

您是否尝试在终端中自己执行这些命令,以查看问题是否来自php?此外,您不能信任ooo/lo返回代码。根据我的经验,即使发生了最可怕的错误(如调用不存在的宏),它们也始终为0。我无法访问终端直接执行命令,因为这是我们的测试服务器,许多项目都在它下运行。我将首先尝试访问。我没有访问终端的权限。我使用phpinfo进行了检查,发现exec列在“disable_classes”下。我不知道这是否是原因,我确信这不是权限问题,因为我还有一个命令exec(“convert/home/yocook/public_html/converted/test.pdf/home/yocook/public_html/converted/tt%d.png”),它工作正常,可以将图像写入输出目录。我还尝试了exec(“su wwwadmin”)和libreoffice convert命令,但得到了126个错误代码。如果它不起作用,您可能无法访问openoffice或soffice可执行文件。您确定openoffice已作为openoffice.org符号链接安装在/usr/bin下吗?尝试执行
exec('ls/usr/bin>/home/yocook/public_html/contents.txt')
查看/usr/binI中的实际内容。我在/usr/bin下找到了openoffice.org、openoffice.org-1.9、openoffice.org-2.0、libreoffice4.1、libreoffice4.1-printeradmin、soffice,并尝试了所有命令,但仍然没有输出。如何检查我是否有权访问openoffice或soffice可执行文件?请尝试
exec('ls-l/usr/bin>/home/yocook/public\u html/contents.txt')
您应该看到很多x,并看到其中提到的用户组,否则您将无法执行它们。谢谢你。我得到了这个输出-rw-r--r--1 nobody nobody nobody 82599 Sep 20 07:16/home/yocook/public_html/contents.txt,我猜“nobody”没有写权限,拥有最低权限。如何更改组,以便用户可以写入文件?