mailgun-php ошибка установки сертификата проверить местоположение - PullRequest
0 голосов
/ 16 декабря 2018

Я вызываю mailgun с помощью mailgun-php для отправки сообщения через страницу PHP на хостинге Windows GoDaddy.Я только начал заново со свежей установки последней версии mailgun-php, следуя инструкциям по установке.Теперь я получаю это сообщение об ошибке.Самая высокая версия PHP, которую я могу иметь на хостинге Windows GoDaddy, - 5.6.Я искал несколько часов, и не смог найти ответ.Ниже сообщения об ошибке мой код.

[15 декабря 2018 10:36:22 Америка / Феникс] PHP Неустранимая ошибка: необработанное исключение «Http \ Client \ Exception \ RequestException» с сообщением «ошибка установки сертификата проверьте местоположение: CAfile: c: \ cgi \ php56 \ curl-ca-bundle.crt CApath: нет 'в D: \ Hosting \ redacted \ mailgun-php \ vendor \ php-http \ curl-client \ src \Client.php: 137 Трассировка стека:

0 D: \ Хостинг \ redacted \ mailgun-php \ vendor \ mailgun \ mailgun-php \ src \ Mailgun \ Connection \ RestClient.php (108):

Http \ Client \ Curl \ Client-> sendRequest (Object (GuzzleHttp \ Psr7 \ Request))

1 D: \ Hosting \ redacted \ mailgun-php \ vendor \ mailgun \ mailgun-php \ src\ Mailgun \ Connection \ RestClient.php (179):

Mailgun \ Connection \ RestClient-> send ('POST', '...', Array, Array)

2 D:\ Хостинг \ redacted \ mailgun-php \ vendor \ mailgun \ mailgun-php \ src \ Mailgun \ Mailgun.php (204):

Mailgun \ Connection \ RestClient-> post ('..', Array,Array)

3 D: \ Hosting \ redacted \ mailgun-php \ sendmail.php(66): Почта в D: \ Hosting \ redacted \ mailgun-php \ vendor \ php-http \ curl-client \ src \ Client.php

в строке 137

<?php
error_reporting(E_ALL);
ini_set ('log_errors', 'on');
ini_set ('display_startup_errors', 'on');
ini_set ('error_reporting', E_ALL);
ini_set('error_log','D:\Hosting\redacted\html\phplogs\php_errors.log');

require 'vendor/autoload.php';
use Mailgun\Mailgun;

if(strtoupper($_SERVER['REQUEST_METHOD']) != 'POST')
    die('Invalid Mail Send request - rejected');

$message = htmlspecialchars($_POST['message']);
$subject = htmlspecialchars($_POST['subject']);
$attachments = json_decode($_POST['attachments']);
$toName = htmlspecialchars($_POST['toName']);
$toAddress = htmlspecialchars($_POST['toAddress']);
$emailTag = htmlspecialchars($_POST['email_tag']);
$from = "Site.com <quote@site.com>";
$domain = "<domain>";

error_log('>>>>>> ' . $emailTag);


// setup credentials
$mg = new Mailgun("key");

# Next, instantiate a Message Builder object from the SDK.
$msgBldr = $mg->MessageBuilder();
# Define the from address.
$msgBldr->setFromAddress($from);
# Define a to recipient.
$msgBldr->addToRecipient($toAddress);
#Define bcc for maintenance
$msgBldr->addBccRecipient('dev@dev.com');
# Define the subject.
$msgBldr->setSubject($subject);
# Define the body of the message.
$msgBldr->setTextBody($message);

$tempfiles = array();
# Add attachments
error_log("Attachment Count: " . strval(count($attachments)));
foreach ($attachments as $key => $value){

    $temp_file = tempnam(sys_get_temp_dir(), $value->name);
    file_put_contents($temp_file, base64_decode($value->content));
    $attSuccess = $msgBldr->addAttachment($temp_file, $value->name);
    $tempfiles[] = $temp_file;
}

$msg = $msgBldr->getMessage();
error_log("Message to send: " . json_encode($msg));

$files = $msgBldr->getFiles();
error_log("Sending files: " . json_encode($files));

$postAddr = "$domain/messages";
error_log("PostTo: " . $postAddr);

# Finally, send the message.
$mg->post($postAddr, $msg, $files);

// clean up temp files
foreach($tempfiles as $key => $f_name){
    unlink($f_name);
}

?>

1 Ответ

0 голосов
/ 16 декабря 2018

В Windows иногда возникает проблема с curl, если вы не определили действительный и новый CA-файл.

https://superuser.com/questions/442793/why-cant-curl-properly-verify-a-certificate-on-windows

Ниже приведен пример загрузки иопределить файл CA.Я не знаю, решит ли это вашу проблему, но вы можете попробовать это.Возможно, тогда вы получите действительное соединение.

...