2013-01-11 124 views
-1

我有一个PHP脚本调用exec()来执行C++程序,但是当我从浏览器调用它不起作用。 相反,如果我使用命令行“php5 ./mypage.php”它的作品。PHP exec()不执行通过浏览器执行C++程序

这是我的PHP页面:

<?php exec("./praat ./FeaturesExtraction.praat ./emotion.wav ./output/"); ?>

普瑞特是分析语音程序。 该程序将输入脚本FeaturesExtraction.praat和wav emotion.wav作为输入,并将输出写入目录“output”(具有所有权限)中。

我测试过两个Web服务器Apache和Lighttpd,但是我没有结果。

有人可以帮助我吗? 我该如何解决这个问题? 或者我怎么能包装praat使用它从网络?

谢谢。

+0

可能是一个权限问题。 Web服务器作为一个不同的用户运行...你有没有得到任何类型的错误输出? – crush

+0

如果我通过Web运行它,没有错误,我也尝试使用www-data用户的命令行“php5 ./mypage.php”,它在Lighttpd中工作;而不是在另一台服务器与Apache我有这个错误: 终止抛出'MelderError'的实例后调用 中止 – antonioc

+0

某些消息: 在localhost与lighttpd我的简单测试二进制文件在C编写的文件也可以通过网络。 在使用Apache的另一台服务器中,此二进制文件不起作用。 所以: - praat从来没有通过网络工作; - 我的简单二进制文件只能在localhost和lighttpd服务器上运行。 – antonioc

回答

0

问题可能是“./praat”。尝试使用可执行文件的完整路径或执行相当于chdir()的PHP到相应的目录

+0

不,也插入完整的路径它不起作用。 我试着用C写的另一个简单的二进制文件(它简单地写一个文件),它的工作原理。 我开始认为只有praat存在一些问题......但如果它是真的,为什么要使用命令行“php5 ./mypage.php”来使用它? 我如何查看可能的错误? 如果我想放弃php解决方案,我怎样才能从网络使用praat? 非常感谢! – antonioc

+0

编辑:与我的简单的二进制工程通过Web只在Lighttpd但不是在Apache服务器上...也许一些权限错误? – antonioc

相关问题