簡體   English   中英

Yocto中支持PHP的Apache2

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM