php - 无法在 App Engine for Laravel 的 php.ini 上启用 PHP 扩展

标签 php google-app-engine laravel php-extension php-ini

我正在尝试启用 Laravel 所需的一些 php 扩展。 php.ini 文件 ( https://cloud.google.com/appengine/docs/php/config/php_ini ) 的文档说将 php.ini 文件放在应用程序的根目录中。

这是我的 php.ini 的样子:

extension=openssl.so
extension=pdo.so
extension=tokenizer.so
extension=mbstring.so
google_app_engine.enable_functions = "php_sapi_name, php_uname"

当我部署它时,我的日志显示:

PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/openssl.so' - /base/php_runtime/modules/openssl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/pdo.so' - /base/php_runtime/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/tokenizer.so' - /base/php_runtime/modules/tokenizer.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/mbstring.so' - /base/php_runtime/modules/mbstring.so: cannot open shared object file: No such file or directory in Unknown on line 0

我已经尝试改变我在 php.ini 中格式化扩展的方式:

extension="openssl.so"
extension="openssl.dll"
extension="php_openssl.so"
extension="php_openssl.dll"

我已经尝试过使用引号和不使用引号。它们之间有空格,没有它们。我不确定还能尝试什么。

最佳答案

我发现了问题。

当您在本地提供应用程序和进行部署时,App Engine 会使用应用程序根目录中的 php.ini 文件。

问题是,当我在本地运行它时,我需要在 php.ini 中添加 extension=* 行来加载必要的扩展。当我在 php.ini 中使用这些行部署它时,我得到了我在问题中报告的错误。

我的解决方案是使用两个不同版本的 php.ini:php.ini.localphp.ini.dev

php.ini.local:

extension=mbstring.so
extension=pdo.so
extension=openssl.so
extension=tokenizer.so
google_app_engine.enable_functions = "php_sapi_name, php_uname"

php.ini.dev:

google_app_engine.enable_functions = "php_sapi_name, php_uname"

并使用 Makefile 将 php.ini 替换为开发版本或本地版本,具体取决于我的需要。

生成文件:

deploy:
    cp php.ini.dev php.ini
    # Code used to deploy
serve:
    cp php.ini.local php.ini
    # Code used to serve locally

关于php - 无法在 App Engine for Laravel 的 php.ini 上启用 PHP 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611598/

相关文章:

php - 获取当前帖子 ID 的 the_terms 名称

php - Wordpress 暂存环境

google-app-engine - 通过 Cloud Endpoints 发送日期和时间

java - 如何使用 JPA 在特定实体组中创建对象? (谷歌应用引擎 Java)

laravel - 了解 Laravel 中的路由

php - "message": "Method Illuminate\\Auth\\SessionGuard::factory does not exist.",

从表单创建 PHP 动态查询

PHPUnit - 模拟 S3Client 运行不正常

java - App Engine 数据存储中的空列表 : Java vs Python

php - Laravel 将我的 CRUD 迁移到另一个项目