从php执行linux程序

时间:2017-03-23 05:00:57

标签: php linux shell centos

使用以下软件:http://silvercoders.com/en/products/doctotext/

我使用以下代码在我的Window机器上工作:

<?php    

$file = 'C:\xampp\htdocs\SMF\sdsdssss.docx';

$content = exec( 'C:\xampp\htdocs\SMF\doctotext\doctotext.exe /c '. $file , $output );

var_dump( $output );

然而,当我在我的Centos机器上尝试使用该软件的linux x86_64版本时,我无法让它工作。 (是的,我的机器也是x86_64)

我试过了:

<?php

$file = '/home/***/public_html/downloads/test_doc.docx';

$content = shell_exec( '/home/***/public_html/doctotext/doctotext.sh \c '. $file , $output );

但没有输出。那些运行centos的等效执行格式是什么。

请告知

1 个答案:

答案 0 :(得分:0)

首先,shell_exec()没有采取第二个论点。我认为你将这个函数与exec()混淆,后者确实需要多个参数:

exec('/home/***/public_html/doctotext/doctotext.sh \c '. $file, $output, $return);

来自shell_exec()的文档:

  

当发生错误或程序没有输出时,此函数可以返回NULL。使用此功能无法检测执行失败。当需要访问程序退出代码时,应使用exec()。

其次,我认为您首先应该检查以便shell脚本具有执行权限。您可以使用以下方式设置正确的权限:

chmod +x /home/***/public_html/doctotext/doctotext.sh

根据脚本的功能,您可能还需要以root权限运行它:

sudo php -f myscript.php

如果您通过浏览器运行脚本,还应确保Web服务器可以读取shell脚本的路径。

如果您启用了错误报告并检查运行脚本时是否收到任何错误消息,那也不错。