Docker:从php调用可执行文件不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Docker:从php调用可执行文件不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1378字,纯文字阅读大概需要2分钟。
内容图文
![Docker:从php调用可执行文件不起作用](/upload/InfoBanner/zyjiaocheng/670/bdfeea3c75694f45b20e9a208f672236.jpg)
我已经设置了运行Nginx和php-fpm容器的Laradock环境.从PHP我想调用一个可执行文件:
<?php
print exec('whoami'); // www-data
echo "<br>";
exec('/usr/local/bin/assimp version', $output, $returnValue);
print $returnValue; // 127
echo "<br>";
print_r($output); // Array ( )
?>
对于我来说,返回值127听起来好像没有找到文件…
但是,当我使用用户“ www-data”进入容器时,一切正常:
docker-compose exec --user www-data php-fpm bash
assimp version // -> valid info response
由于我不确定是否必须将可执行文件放置在“工作区”或php-fpm容器中,因此我尝试了两种方法,结果相同.另外,将可执行文件放在/ var / www目录中也无济于事.
该可执行文件是由Dockerfile添加的:
USER www-data
COPY ./assimp /usr/local/bin/assimp
COPY ./libassimp.so.4.1.0 /usr/local/lib/libassimp.so.4.1.0
RUN ln -s /usr/local/lib/libassimp.so.4.1.0 /usr/local/lib/libassimp.so
RUN chmod 777 /usr/local/bin/assimp
RUN echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
RUN echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.bashrc
有什么想法可以解决此问题或如何继续进行调试吗?提前致谢!
解决方法:
返回码127用于未找到的文件,但不一定是您正在执行的文件.
在这里,您设置了一些库,但是在执行docker容器时,不会读取您的bashrc,因此,动态加载程序(/lib/ld-linux[…].so)找不到您的libassimp.so.4.1. .0,因此过程返回127.
您应该使用Dockerfile的ENV指令设置PATH和LD_LIBRARY_PATH,如下所示:
ENV PATH =“ /usr/local/bin:${PATH}”
ENV LD_LIBRARY_PATH = /usr/local/lib
内容总结
以上是互联网集市为您收集整理的Docker:从php调用可执行文件不起作用全部内容,希望文章能够帮你解决Docker:从php调用可执行文件不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。