我正在尝试启用 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.local
和 php.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/