迁移到PHP55:错误建立数据库连接

时间:2015-03-15 14:38:12

标签: php google-app-engine

转移到PHP55后,我遇到了一个非常奇怪的问题。

我有一个本地工作环境,并在PHP上部署。遵循Google发送的有关迁移到PHP55的说明:

  

要利用这些新功能,请找到您的“app.yaml”文件   改变读取的行             运行时:php到             运行时:php55

     

新功能将在本地自动启用   开发服务器,一旦你的应用程序在生产中   部署。你可以在任何时候切换回旧的运行时   通过恢复您的配置来确定接下来两个月的时间   app.yaml文件。某些功能(如cURL支持)可能需要   附加配置以便启用。*

我遇到了着名的Error establishing a database connection错误。

只要我在我的app.yaml文件中将PHP55还原为PHP,错误就会消失,网页会再次加载。

非常感谢任何反馈。如果需要,我可以分享wp-config.php。

以下是app.yaml中的条目:

申请:sxxxx-xxxxx 版本:5 运行时:php55 api_version:1 线程安全:是的

处理程序:      - url:/(..(htm|html|css|js))$       static_files:\ 1       上传:。。(htm | html | css | js)$       application_readable:true

- url: /wp-content/(.*\.(ico|jpg|png|gif))$
  static_files: wp-content/\1
  upload: wp-content/.*\.(ico|jpg|png|gif)$
  application_readable: true

- url: /(.*\.(ico|jpg|png|gif))$
  static_files: \1
  upload: .*\.(ico|jpg|png|gif)$

- url: /wp-admin/(.+)
  script: wp-admin/\1
  secure: never

- url: /wp-admin/
  script: wp-admin/index.php
  secure: never

- url: /wp-login.php
  script: wp-login.php
  secure: never

- url: /wp-cron.php
  script: wp-cron.php
  login: admin

- url: /xmlrpc.php
  script: xmlrpc.php

- url: /wp-(.+).php
  script: wp-\1.php

- url: /(.+)?/?
  script: index.php

=============

这是我未更改的wp-config.php,它与app.yaml中的php一起使用,但在app.yaml中使用php55,给我错误:

if(isset($ _ SERVER ['SERVER_SOFTWARE'])&& strpos($ _ SERVER ['SERVER_SOFTWARE'],'Google App Engine')!== false){

    /** Google App Engine Settings */
    define('DB_NAME', 'sadhusanga');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_HOST', ':/cloudsql/sadhu-sanga:gaura');

}
else
{

    /** Local Settings */
    define('DB_NAME', 'sadhusanga');
    define('DB_USER', 'root');
    define('DB_PASSWORD', 'xxxxxxxx');
    define('DB_HOST', 'localhost');

}

1 个答案:

答案 0 :(得分:0)

我会捅这个。

当Wordpress检测到您使用的是PHP> = 5.5时,它将使用MySQLi。请参阅https://github.com/WordPress/WordPress/blob/master/wp-includes/wp-db.php#L627了解我的意思。 WP尝试复制mysql_real_connect生成的套接字检测,并且使用现有的DB_HOST配置可以正常工作;但是,在将主变量移动到NULL之后,它将主变量保留为空字符串而不是socketmysqli_real_connect需要NULL或" localhost"使用套接字连接时的主机名。请参阅http://php.net/manual/en/mysqli.real-connect.php了解我的意思。

在WP套接字检测后对变量执行var_dump给我们:

array(4) { ["initial_host"]=> string(30) ":/cloudsql/project-id:instance" ["new_host"]=> string(0) "" ["port"]=> NULL ["socket"]=> string(29) "/cloudsql/project-id:instance" }

我刚刚对我的GAE应用程序进行了测试,但由于主机名的空字符串,它确实引发了数据库连接错误。