Tl;博士;你的选择是可怕的。您必须在 chroot 中构建或制作自己的容器。
这里有一个带有一些主要错误的预构建 docker:
https://stackoverflow.com/a/38415948/370238
我可能会尝试在 yum strap 中构建它,看看效果如何。
你不能。您不仅需要一堆相互冲突的依赖项,而且应用程序引擎 php 扩展是使用静态路径制作的,这意味着您必须对 php 和 bison 进行核对才能使其工作。这就是没有应用引擎支持的其他 php 扩展。正确的做法是在 chroot 中完成所有操作……但现在我们正在描述 docker,并且已经有人在这里为此制作了 docker 镜像:https://stackoverflow.com/a/38415948/370238
这些说明是死胡同:
对于初学者来说,这并不容易。您需要从源代码构建 php,然后从源代码构建 PHP 扩展。幸运的是,官方 repo 中的 protobuf-devel 运行良好。
Ubuntu 的人也有类似的问题。
Google App Engine PHP SDK - How to install on Ubuntu (15.10)?
Battle #1 Bison 2.6.5
免责声明:这些说明对 Fedora 24 进行了不兼容的更改。您可能遇到升级错误或不兼容问题。如果您有更好的建议,例如 chroot 方法,请发表评论。
您需要 bison 2.6.5,因为 fedora 附带 3,它不能用于构建 PHP-5.5。只需阅读来自http://ftp.gnu.org/gnu/bison/的代码的安装文件
战斗#2 PHP 5.5
Fedora 24 附带 PHP 5.6,此时它与 appengine-php-extension 完全不兼容。这需要一段时间。
git克隆https://github.com/php/php-src.git
Battle #3 App Engine PHP 运行时扩展
- 使用
sudo dnf install protobuf-devel 安装 Google 的 Protocol Buffer 标头,因为我们将使用内置的部分 protobuf 编译 PHP 运行时扩展。
- 克隆 App Engine PHP Extension 存储库,我建议到 /opt。
git clone git@github.com:GoogleCloudPlatform/appengine-php-extension.git
- Cd 进入它并为
remote_api.proto 和 urlfetch_service.proto 生成 C++ 源文件和头文件
这两个命令应该可以,并且没有输出。
protoc --cpp_out=. remote_api.proto
protoc --cpp_out=. urlfetch_service.proto
- 你仍然需要谷歌使用的 C++ 构建工具,确保你有它们
sudo dnf install autoconf automake libtool curl make gcc-c++ unzip libxml2-devel
- protobuf 的 lib 路径是
/usr/lib64,包含路径是 /usr/include。您可以通过运行sudo dnf repoquery -l protobuf-devel 找到它
请注意,在撰写本文时,App Engine 使用的是 PHP 5.5.34,而 Fedora 24 使用的是 5.6.23...所以如果您打算在 App Engine 上启动,请不要使用数组常量。
故事结束:要完成这项工作,您需要手动将 php55 的所有方面覆盖到 fedora 24 中,并编译应用引擎支持的每个扩展。通过这样做,您将完全削弱依赖于 php.ini 的 repo 包。不要这样做。