[英]Apache2 with PHP support in Yocto
我正在使用Yocto創建一個包含apache2的版本,但是添加php支持卻很難。 我以前運行過它(閱讀:去年),但是從那時起,對meta-openembedded中的meta-webserver層進行了更改。 從meta-webserver中的README文件中:
“該層曾經提供了一個構建mod_php的modphp配方,但是現在它已作為meta-oe中php配方的一部分而構建。但是,由於apache2是構建mod_php所必需的,因此apache2配方位於該層中,並且meta中的配方-oe不能依賴它,默認情況下不會構建mod_php。如果您希望使用mod_php,則需要在php配方的PACKAGECONFIG值中添加“ apache2”以啟用它。
我在自己的圖層中將以下行添加到了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)}”
我不知道DEPENDS和RDEPENDS是否不再需要,但似乎沒有受到傷害。
然后我意識到,僅將'php'添加到我的layer.conf中並不會像以前那樣構建二進制文件。 我必須明確指定php-cli和php-modphp。 我的layer.conf現在包括:
IMAGE_INSTALL_append = " apache2 php php-cli php-modphp"
以此構建PHP配方,並包括php二進制文件和php apache模塊。 但是,由於未定義PHP5環境變量,因此/etc/apache/modules.d/70_mod_php5.conf文件不會加載PHP模塊(請參見下面的默認文件)。 我不知道在哪里指定環境變量,因此我最終在自己的層中覆蓋了此文件,而在我的版本中,我只是刪除了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>
我希望這可以對遇到相同問題的其他人有所幫助。
要在yocto中用apache添加PHP支持,請在bitbake配方文件中進行以下更改。
以下是php.inc文件的差異輸出
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}"
希望,這有助於解決:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.