使用php在谷歌应用引擎中不支持mysqli

时间:2016-10-24 13:54:23

标签: php mysql google-app-engine mysqli

我正在尝试在谷歌应用引擎上设置我的脚本,我有mysqli支持php的问题。当我运行它时,我收到消息

  

致命错误:

中找不到“mysqli”类

我试过phpinfo(),但那里没有mysqli扩展

然后我尝试像这里https://cloud.google.com/appengine/docs/php/config/php_ini

一样配置php.ini

我加了

extension=php_mysqli.dll
extension=mysqli.so
extension=mysql.so

并将其上传到基本目录中,但是仍然没有成功,我该如何修复它。我可以看到PDO,但我需要更改脚本中的所有内容,这需要花费太多时间。

app.yaml列在下面

runtime: php55
api_version: 1

env_variables:
  # Replace project, instance, database, user and password with the values obtained
  # when configuring your Cloud SQL instance.
  MYSQL_DSN: mysql:unix_socket=/cloudsql/datahouse;dbname=db
  MYSQL_USER: root
  MYSQL_PASSWORD: 'pass'

handlers:
- url: /.*
  script: test.php

我正在使用此

运行应用程序
dev_appserver.py --php_executable_path=/usr/bin/php-cgi $PWD

3 个答案:

答案 0 :(得分:0)

php.ini添加到项目根目录(与app.yaml相同的级别):

extension = "mysqli.so"

答案 1 :(得分:0)

默认情况下,谷歌应用引擎似乎支持mysqli。问题是,在使用常规主机时,需要以不同的方式配置与数据库的连接。它需要通过套接字

我在app.yaml文件中使用此设置作为env变量

env_variables:
MYSQL_DSN: mysql:unix_socket=/cloudsql/datahouse;dbname=mydatabase
MYSQL_USER: root
MYSQL_PASSWORD: 'mypassword'

我在我的数据库中找到了这个在云端SQL上的值。这解决了我的问题

答案 2 :(得分:0)

我通过以下方法使其起作用:

  

$ instance_name =“ / cloudsql / YOUR_PROJECT_ID_WITHOUT_DB_NAME”;

     

$ mysqli = mysqli_connect(null,YOUR_DB_USER,YOUR_DB_PASS,'DB_NAME',null,$ instance_name);

在上面的示例中:

  

MYSQL_DSN:mysql:unix_socket = / cloudsql / datahouse; dbname = mydatabase

     

MYSQL_USER:根

     

MYSQL_PASSWORD:“ mypassword”

仅用于:

  

$ instance_name =“ / cloudsql / datahouse”;

     

$ mysqli = mysqli_connect(null,'root','mypassword','DB_NAME',null,$ instance_name);

希望有帮助