我正在尝试启用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
我用引号试了一下,没有它们。它们之间有空格,没有它们。我不知道还有什么可以尝试的。
答案 0 :(得分:2)
我发现了问题。
在本地提供应用程序时以及部署时,App Engine会使用应用程序根目录中的php.ini
文件。
问题在于,当我在本地运行它时,我需要在extension=*
中添加php.ini
行来加载必要的扩展名。当我在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替换为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