我正在使用Yocto来创建包含apache2的构建,但我很难添加php支持。我以前运行它(读取:去年),但从那时起,meta-openembedded中的元网络服务器层发生了变化。来自meta-webserver中的README文件:
“这个层用于提供构建mod_php的modphp配方,但是 现在这是作为meta-oe中php配方的一部分构建的。但是,自从 构建mod_php需要apache2,而apache2配方就在这里 meta-oe中的图层和配方不能依赖它,mod_php不是构建的 默认情况下。如果您确实希望使用mod_php,则需要添加“apache2” 到php配方的PACKAGECONFIG值以启用它。“
我在自己的图层中将以下行添加到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并且可以提供一些帮助来解决这个问题?谢谢!
答案 0 :(得分:5)
在Armin Kuster的帮助下,我设法解决了我的问题。阿明注意到PACKAGECONFIG_append ="的apache2"覆盖现有的PACKAGECONFIG并设置" apache2"只要。基于他的建议,我改变了我的bbappend文件,包括以下内容:
DEPENDS = "apache2"
RDEPENDS_${PN} = "apache2"
PACKAGECONFIG = "sqlite3 apache2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}”
我不知道DEPENDS和RDEPENDS是否有必要,但它们似乎没有受到伤害。
然后我意识到只需添加' php'我的layer.conf并没有像过去那样构建二进制文件。我必须明确指定php-cli和php-modphp。我的layer.conf现在包括:
IMAGE_INSTALL_append = " apache2 php php-cli php-modphp"
有了这个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>
我希望这对同样问题的其他人有所帮助。
答案 1 :(得分:0)
要在yocto中使用apache添加PHP支持,请在bitbake配方文件中进行以下更改。
下面是php.inc文件的diff输出
10c10
< openssl libmcrypt"
---
> openssl libmcrypt apache2-native apache2"
52c54,55
< EXTRA_OECONF = "--enable-mbstring \
---
> EXTRA_OECONF = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs \
> --enable-mbstring \
129c132
< if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
---
> if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'true', d)}; then
200c203
< PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}"
---
> PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN} ${PN}-modphp"
236a240
> #FILES_${PN} += "${sysconfdir}"
希望,这有助于解决问题:)