Mar*_*gek 0 php apache2 openembedded bitbake yocto
我正在使用Yocto来创建包含apache2的构建,但我很难添加php支持.我以前运行它(读取:去年),但从那时起,meta-openembedded中的元网络服务器层发生了变化.从meta-webserver中的README文件:
"这一层用于提供内置mod_php的一个modphp配方,但这种情况正在建于元OE的PHP食谱的一部分.然而,由于Apache2的是需要建立mod_php,并且和Apache2的食谱是在这一层,食谱元-oe不能依赖它,mod_php,并且默认情况下不建.如果你希望使用mod_php的,你需要"的Apache2",以使将其添加到PACKAGECONFIG价值,为PHP的配方."
我在我自己的图层中添加了以下行到php:
PACKAGECONFIG_append ="apache2"
但是当编译mod_php时无法找到似乎是apache包含文件的内容时我得到编译错误(我在下面只包含一个错误,我也得到类似的ap_config.h错误):
在文件从/home/martin/Yocto/poky/rpi/tmp/work/x86_64-linux/php-native/5.6.12-r0/php-5.6.12/sapi/apache2handler/mod_php5.c:26:0包括:| /home/martin/Yocto/poky/rpi/tmp/work/x86_64-linux/php-native/5.6.12-r0/php-5.6.12/sapi/apache2handler/php_apache.h:24:19:致命错误: httpd.h:没有这样的文件或目录| 编译终止.
有没有人设法最近用php支持编译apache2,并且可以提供一些帮助,如何做到这一点?谢谢!
在Armin Kuster的帮助下,我设法解决了我的问题.Armin注意到PACKAGECONFIG_append ="apache2"会覆盖现有的PACKAGECONFIG并仅设置"apache2".基于他的建议,我更改了我的bbappend文件,包括以下内容:
DEPENDS = "apache2"
RDEPENDS_${PN} = "apache2"
PACKAGECONFIG = "sqlite3 apache2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}”
Run Code Online (Sandbox Code Playgroud)
我不知道DEPENDS和RDEPENDS是否有必要,但它们似乎没有受到伤害.
然后我意识到只是在我的layer.conf中添加'php'并不像过去那样构建二进制文件.我必须明确指定php-cli和php-modphp.我的layer.conf现在包括:
IMAGE_INSTALL_append = " apache2 php php-cli php-modphp"
Run Code Online (Sandbox Code Playgroud)
有了这个,PHP配方构建并包括php二进制文件和php apache模块.但是,文件/etc/apache/modules.d/70_mod_php5.conf不会加载PHP模块,因为未定义PHP5环境变量(请参阅下面的默认文件).我不知道在哪里指定环境变量,所以我最终覆盖了我自己的图层中的这个文件,在我的版本中我只是删除了IfDefine.
# vim: ft=apache sw=4 ts=4
<IfDefine PHP5>
# Load the module first
<IfModule !sapi_apache2.c>
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
</IfModule>
# Set it to handle the files
AddHandler php5-script .php .phtml .php3 .php4 .php5
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.html.var index.php index.phtml
</IfDefine>
Run Code Online (Sandbox Code Playgroud)
我希望这对同样问题的其他人有所帮助.
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |