1

Google-API-PHP-Clientを使用しようとしていますが、その基本クラスが次のエラーをスローしています。

Severity: Warning

Message: array_merge() [function.array-merge]: Argument #1 is not an array

Filename: libraries/Google_Client.php

Line Number: 107

107のようなコードは次のようなものです。

public function __construct($config = array()) {
    global $apiConfig;
    $apiConfig = array_merge($apiConfig, $config);
    self::$cache = new $apiConfig['cacheClass']();
    self::$auth = new $apiConfig['authClass']();
    self::$io = new $apiConfig['ioClass']();
  }

それが配列として初期化されていないことを理解してglobal $apiConfigいます。そのため、array_mergeがエラーをスローしています。しかし、に変更するとglobal $apiConfig = array();、別のエラーが発生しましたParse error: syntax error, unexpected '=', expecting ',' or ';' in C:\Softwares\xampp\htdocs\testsaav\application\libraries\Google_Client.php on line 106

PHP5.3を搭載したXAMPPでCodeigniter2.3を使用しています

4

2 に答える 2

2

関数で配列を初期化します(必要な場合)

public function __construct($config = array()) {
    global $apiConfig;
    $apiConfig = (isset($apiConfig) && is_array($apiConfig)) ? $apiConfig : array(); // initialize if necessary
    $apiConfig = array_merge($apiConfig, $config);
    self::$cache = new $apiConfig['cacheClass']();
    self::$auth = new $apiConfig['authClass']();
    self::$io = new $apiConfig['ioClass']();
  }
于 2013-01-25T02:01:51.650 に答える
2

サーバーログをチェックして、Google_Client.phpのrequire_once('config.php')に関連するエラーがあるかどうかを確認します(ファイルが見つからなかった場合は、スクリプトが停止しているはずです)。

require_once('Google_Client.php')を実行すると、そのファイルから次のコードが実行されます。必要な処理を行うと、$apiConfigがスクリプトに表示されます。

// hack around with the include paths a bit so the library 'just works'
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

require_once "config.php";
// If a local configuration file is found, merge it's values with the default configuration
if (file_exists(dirname(__FILE__)  . '/local_config.php')) {
  $defaultConfig = $apiConfig;
  require_once (dirname(__FILE__)  . '/local_config.php');
  $apiConfig = array_merge($defaultConfig, $apiConfig);
}

config.phpには触れないことに注意してください。そこで何かをオーバーライドする必要がある場合は、local_config.phpを作成します。

PHP 5.3を使用するシステムから、このスクリプトを使用しました。以下に示すようなスクリプトはエラーをスローしません。$ apiConfigの設定を解除すると、エラーが再現されます。

<?php

require_once('src/Google_Client.php');

print_r($apiConfig);
// uncommenting the next line replicates issue.
//unset($apiConfig);
$api = new Google_Client();

?>
于 2013-01-25T02:22:40.487 に答える