在 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 模块。但是,文件 /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>
我希望这可以对遇到同样问题的其他人有所帮助。