【问题标题】:Google App Engine PHP and Cloud SQLGoogle App Engine PHP 和 Cloud SQL
【发布时间】:2013-06-06 05:03:13
【问题描述】:

我正在尝试从我的本地开发 Google App PHP 服务器连接到我的 Google Cloud SQL。但是 PHP 没有看到函数 mysql_connect,它没有看到类 mysqli,当我尝试连接 PDO 类时它会引发异常 could not find driver


我使用命令运行我的开发 PHP 服务器:

"C:\Users\pasha\appengine-php-sdk-1.8.0\google_appengine\dev_appserver.py" --php_executable_path="C:\Users\pasha\php\php-cgi.exe" C:\Work\gaetest\


app.yaml 文件包含以下内容:

application: gaetest
version: 1
runtime: php
api_version: 1

handlers:

- url: /(.*)
  script: app/\1

测试脚本是:

define('MYSQL_HOST', "/cloudsql/sample-project:sample-sql-instance");
define('MYSQL_LOGIN', "sample-login");
define('MYSQL_PASSWORD', "sample-pass");
define('MYSQL_DB', "sample-db");

echo "\nfunction_exists('mysql_connect'):\n"; 
var_dump(function_exists('mysql_connect'));

echo "\nclass_exists('mysqli'):\n"; 
var_dump(class_exists('mysqli'));   

try{

    echo "\nUse PDO\n";
    $db = new PDO(
        'mysql:unix_socket='.MYSQL_HOST.';dbname='.MYSQL_DB.';charset=utf8',
        MYSQL_LOGIN,
        MYSQL_PASSWORD
    );
}catch(Exception $e){
    var_dump($e->__toString());
}

测试脚本的输出:

function_exists('mysql_connect'):
bool(false)

class_exists('mysqli'):
bool(false)

Use PDO
string(371) "exception 'PDOException' with message 'could not find driver' in C:\Work\gaetest\app\test.php:19
Stack trace:
#0 C:\Work\gaetest\app\test.php(19): PDO->__construct('mysql:unix_sock...', 'sample-login', 'sample-pass')
#1 C:\Users\pasha\appengine-php-sdk-1.8.0\google_appengine\google\appengine\tools\devappserver2\php\setup.php(45): require('C:\Work\gaetest...')
#2 {main}"

如何从我的 PHP 开发服务器使用 Google Cloud SQL? 谢谢。

【问题讨论】:

    标签: php sql google-app-engine pdo google-cloud-sql


    【解决方案1】:

    您无法从您的开发服务器连接到真正的 CloudSQL 实例。开发应用时,您需要针对本地安装的 MySQL 进行测试。

    【讨论】:

    • 我们如何做到这一点?我已经拥有包含 MySQL 的 WampSerevr。如何让 SDK 使用这个 MySQL?
    • 这不是真的。您可以使用 google cloud sql 代理连接到真正的 CloudSQL。经我测试。
    【解决方案2】:

    按照此处的说明进行操作:

    https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_PHP

    但是,您应该使用以下配置命令:

    ./configure --prefix=$PWD/installdir --enable-bcmath --with-mysql --with-pdo-mysql
    

    您可能能够在事后运行该配置命令,但我不确定 TBH

    【讨论】:

      【解决方案3】:

      听起来你需要在本地环境中安装 mysql 和 mysqli 扩展。

      【讨论】:

      【解决方案4】:

      我已经卖掉了我的问题。

      1. 我已将php 文件夹中的php.ini-development 文件重命名为php.ini
      2. 然后我在php.ini 中启用了所需的扩展
      3. 我已将extension_dir = "ext" 中的php.ini 行取消注释,因此php 现在可以看到扩展名。

      就是这样。谢谢。

      【讨论】:

        【解决方案5】:

        您必须将 php.ini 复制到项目本地路径(与 app.yaml 文件相同的目录)中,并取消注释 pdo 扩展名。

        https://cloud.google.com/appengine/docs/standard/php/config/php_ini

        它对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-18
          • 2014-08-03
          • 2014-05-28
          • 1970-01-01
          • 2019-02-25
          • 2014-04-10
          • 2014-07-19
          相关资源
          最近更新 更多