[英]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.