PHP执行失败,没有错误

PHP执行失败,没有错误,php,cmd,permissions,unoconv,Php,Cmd,Permissions,Unoconv,我想自动将.odf文件导出到.pdf 我试过一种叫 在Windows命令提示符下键入时,一切正常 >"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt 一旦在PHP脚本中使用,任何东西都不再有效。没有出现错误 exec('"C:\Progr

我想自动将
.odf
文件导出到
.pdf

我试过一种叫

在Windows命令提示符下键入时,一切正常

>"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt
一旦在PHP脚本中使用,任何东西都不再有效。没有出现错误

exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt');

//or

shell_exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt')
我还试图逃避
\
或以不同的方式使用
'
,但我的测试没有一个是决定性的

$test = exec($cmd, $output, $return);
echo var_dump($test);
echo var_dump($output);
echo var_dump($return);
给我

//echo var_dump($test)give nothing

//echo var_dump($ouput);
array (size=0)
  empty

//echo var_dump($return);
int 1

这听起来像是权限问题,但我也检查了这一点,并且所有文件夹都可以通过PHP访问。

我会将此添加为注释,但没有足够的代表性

我在从WAMP服务器更改为IIS时遇到了这个问题,正如您所说,这是一个权限问题。 事实证明,我必须给“IUSR”用户和“IIS_IUSRS”组完全的权限才能执行

后来我遇到了类似的情况,我相信我决定简单地将用户IIS的运行更改为管理员,但这可能不推荐


当然,如果您不使用IIS,这将无关紧要,但我将把它留在这里,以防其他人使用。

通过测试外来代码,python.exe被覆盖,无法使用。 第一篇文章中的代码几乎是正确的。我的错

对于好奇的人,这是我的最后一段代码,带有一个易于使用的函数

createPDF.bat

@echo off
set arg1=%1
set arg2=%2

cd "C:\Program Files (x86)\OpenOffice 4\program\"

python.exe "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf -o %arg2% %arg1%
createPDF.php

function createPDF($from, $to)
{
    //Launch the .bat, do not forget the double backslash
    $handle = popen("start /B path\\to\\createPDF.bat ".$from." ".$to, "r");

    //Debug if needed
    //echo "'$handle'; " . gettype($handle) . "\n";
    //$read = fread($handle, 2096);
    //echo $read;

    //Close the socket
    pclose($handle);
}
include_once($_SERVER['DOCUMENT_ROOT']."path\to\createPDF.php"); 

//createPDF(source, destination), do not forget the double backslash (\\)
createPDF("E:\\A\\strange\\path\\to\\Report.odt" , "D:\\Final_report");
现在,当我必须将odt文件转换为pdf时,我只需要做以下工作

test.php

function createPDF($from, $to)
{
    //Launch the .bat, do not forget the double backslash
    $handle = popen("start /B path\\to\\createPDF.bat ".$from." ".$to, "r");

    //Debug if needed
    //echo "'$handle'; " . gettype($handle) . "\n";
    //$read = fread($handle, 2096);
    //echo $read;

    //Close the socket
    pclose($handle);
}
include_once($_SERVER['DOCUMENT_ROOT']."path\to\createPDF.php"); 

//createPDF(source, destination), do not forget the double backslash (\\)
createPDF("E:\\A\\strange\\path\\to\\Report.odt" , "D:\\Final_report");

首先尝试使用一个非常简单的命令,您必须整理引号字符并转义以获得正确的语法。正如您所说,它可能对某人有用,但实际上我不使用IIS您的服务器设置是什么?我认为在WAMP中,我有类似的功能,如果这有帮助,我将wampapache服务更改为以管理员身份运行