繁体   English   中英

如何运行在PHP脚本中包含外部库的C程序?

[英]How do I run a C program that involves an external library in a PHP script?

我创建了一个简单的C程序,该程序接受一个整数参数并输出该整数加2。 我可以在终端中运行它

./simplep 2

在PHP中

exec('./simplep 2', $output)

我有一个名为myprogram的更复杂的程序,其中涉及一个外部库。 我可以在终端中运行它

./myprogram a.mov

但是如果我用

exec('./myprogram a.mov', $output)

没有输出,这让我觉得程序根本没有运行。

PS。 我在Mac上工作。

更新

从错误输出中,我知道问题出在库。 它说

dyld: Library not loaded: /opt/local/lib/libjpeg.8.dylib". 

但是库文件在那里。

它可能会产生一个错误,但是它将使用stderr而不是stdout 在此处查看stderr一种简单方法是更改​​:

exec('./myprogram a.mov', $output)

exec('./myprogram a.mov 2>err.out', $output)

并查看文件err.out以查看错误消息是什么。

编辑:

既然您已发布错误,则看起来好像没有加载动态库。 最可能的原因是没有将环境变量传递给exec ,而正在清除DYLD_LIBRARY_PATH环境变量。 查看您终端上的DYLD_LIBRARY_PATH (通过env ),然后尝试运行:

exec('env DYLD_LIBRARY_PATH=XYZ ./myprogram a.mov 2>err.out', $output)

其中XYZ是终端上DYLD_LIBRARY_PATH的值。

您是否具有使用exec运行myprogram的正确权限? 尝试这个

chmod +x myprogram

如果您的程序在命令行上运行,请尝试使用shell_exec而不是exec。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM