【问题标题】:Can't Enable PHP Extensions on php.ini on App Engine for Laravel无法在 App Engine for Laravel 上的 php.ini 上启用 PHP 扩展
【发布时间】:2016-02-10 05:52:38
【问题描述】:

我正在尝试启用 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"

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

【问题讨论】:

  • 这些库可用吗? cloud.google.com/appengine/docs/php/… 好像不是(我不知道为什么)。
  • 我已经找到了问题所在。文档说这些模块已经加载。并且只有imagickcurlmongointl 需要显式添加到php.ini
  • 删除extension=* 行修复了它。
  • 如果可以,请将其发布为答案。
  • 用我的解决方案发布了答案。

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


【解决方案1】:

我发现了问题。

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

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

我的解决方案是有两个不同版本的php.iniphp.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 替换为开发版本或本地版本,具体取决于我的需要。

Makefile:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多