-2

奇妙なエラーが発生しました。修正方法がわかりません。これはエラーです:

( ! ) Catchable fatal error: Argument 2 passed to Guzzle\Service\Client::getCommand() must be an array, string given, called in phar://C:/wamp/www/PHPCodeLance/WebTech/Projects/MIB v2/lib/aws/aws.phar/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php on line 93 and defined in phar://C:/wamp/www/PHPCodeLance/WebTech/Projects/MIB v2/lib/aws/aws.phar/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php on line 113
Call Stack
#   Time    Memory  Function    Location
1   0.0009  676280  {main}( )   ..\test.php:0
2   0.0557  3311632 Aws\Ses\SesClient->send_email( )    ..\test.php:30
3   0.0557  3312128 Aws\Common\Client\AbstractClient->__call( ) ..\test.php:30
4   0.0557  3312208 Guzzle\Service\Client->__call( )    ..(null):103
5   0.0557  3312296 Guzzle\Service\Client->getCommand( )    ..(null):93

これは私が使用したコードです(AWSページから直接)

$client = SesClient::factory(array(
    'key'    => '',
    'secret' => '',
    'region' => 'us-east-1'
));

$response = $client->send_email(
    'no-reply@amazon.com', // Source (aka From)
    array('ToAddresses' => array( // Destination (aka To)
        'myemail@hotmail.nl'
    )),
    array( // Message (short form)
        'Subject.Data' => 'Email Test ' . time(),
        'Body.Text.Data' => 'This is a simple test message ' . time()
    )
);

// Success?
var_dump($response->isOK());

アップデート!!!:

上記の問題を修正したところ、SSL 証明書の問題が発生しました。

Guzzle\Http\Exception\CurlException: [curl] 60: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed [url] https://email.us-east-1.amazonaws.com/ in phar://C:/wamp/www/PHPCodeLance/WebTech/Projects/MIB v2/lib/aws/aws.phar/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 578

前もって感謝します

4

3 に答える 3

1

最初の (現在は解決済みと思われる - どのように?) 問題に対する回答については、「SES で E メールを送信する際の AWS SDK Guzzle エラー」を参照してください。

問題の解決策、特にこれほど難解なものがある場合は、他の人が使用できるように投稿してください

于 2013-10-13T03:22:50.130 に答える
0

First of all, it seems that you should include this code for instantiating the client and sending the email within a try-catch block, that will certainly resolve the Catchable fatal error part and allow your code to continue executing.

As far as the getCommand parameter problem, my guess is that there is some issue with your arguments to send_email() that are passed down the call stack. Without digging through the SDK I don;t know off the top of my head what arguments are specifically passed to getCommand, but you have all the information you need there to debug the issue, as you should be able to map how your arguments are passed through each of the calls shown in the stack trace, debugging along the way to verify what is passed to each function is what is expected.

于 2013-03-29T19:58:05.363 に答える
0

SSL の問題は、CURL が CA 証明書をバンドルしていないためです。適切な CA 情報を設定する必要があります。

解決策 1 (PHP.ini への変更):

  1. http://curl.haxx.se/docs/caextract.htmlから CA バンドル (cacert.pem) をダウンロードします。
  2. ローカル システムに配置します (例: C:\xampp\cacert.pem)。
  3. php.ini を開きます
  4. cacert.pem の場所を指すように curl.ca_info オプションを設定します。

    Example: curl.ca_info="C:\xampp\cacert.pem"
    
  5. アパッチを再起動する

解決策 2 (各 CURL 呼び出しの前にオプションを設定する)

  1. http://curl.haxx.se/docs/caextract.htmlから CA バンドル (cacert.pem) をダウンロードします。
  2. ローカル システムに配置します (例: C:\xampp\cacert.pem)。
  3. 次のコードを記述します。

    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
    curl_setopt ($ch, CURLOPT_CAINFO, "pathto\cacert.pem");
    

ソース: http://tumblr.wehavefaces.net/post/52114563111/environment-windows-xampp-curl-library

于 2013-06-04T04:07:40.857 に答える