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

时间:2015-11-09 14:41:44

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

我正在尝试启用Laravel所需的一些php扩展。 create table football_players ( id VARCHAR(36) PRIMARY KEY, name VARCHAR(20), surname VARCHAR(20) ); 文件(https://cloud.google.com/appengine/docs/php/config/php_ini)的文档说明将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

我用引号试了一下,没有它们。它们之间有空格,没有它们。我不知道还有什么可以尝试的。

1 个答案:

答案 0 :(得分:2)

我发现了问题。

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

问题在于,当我在本地运行它时,我需要在extension=*中添加php.ini行来加载必要的扩展名。当我在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替换为dev版本或本地版本,具体取决于我的需要。

<强> Makefile

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