1

我正在尝试从我的本地开发 Google App PHP 服务器连接到我的 Google Cloud SQL。但是 PHP 看不到 function mysql_connect,它看不到 class并且当我尝试连接 PDO 类时mysqli它会引发异常。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?谢谢你。

4

5 回答 5

1

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

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

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

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

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

于 2014-06-05T18:02:10.247 回答
1

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

于 2013-06-11T04:32:58.950 回答
0

我已经卖掉了我的问题。

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

就这样。谢谢你。

于 2013-06-12T10:18:03.367 回答
0

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

于 2013-06-11T06:31:33.690 回答
0

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

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

这个对我有用。

于 2017-03-15T23:48:41.677 回答