将 mailgun API 与 codeigniter 一起使用

Using mailgun API with codeigniter

我正在尝试使用 mailgun api 从我的网站发送用户注册确认电子邮件。我的网站位于共享主机上。当我在本地主机(WAMP 服务器)上测试时,mailgun api 似乎运行良好。当我尝试在源代码中使用 api 时,即在控制器内部,出现语法错误。共享主机是基于 linux 的 (CentOS) 服务器。

这是错误信息。

Parse error: syntax error, unexpected '[' in /var/www/html/log2pdf/mailgun/vendor/guzzlehttp/psr7/src/functions.php on line 78

由于语法错误,我在 linux 服务器上单独下载并安装了 mailgun 依赖项(即 composer、guzzle 适配器等),因为我最初是从本地主机复制文件的(windows) 并且在 windows 和 linux 这些文件不同的印象。但这也没有什么区别。

运行 php 5.6.25 在本地主机 (WAMP) 上,php 5.3.3 在共享主机 (CentOS) 上。使用 mailgun 网页上的命令安装了所有 mailgun 依赖项。

我已尽我所能,如有任何帮助,我们将不胜感激。

这是我的控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require '/var/www/html/mysite/mailgun/vendor/autoload.php';
use Mailgun\Mailgun;

class Register extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->model('User_model');
    $this->load->helper('cookie');
}
public function index($param = '')
{

    if (($this->session->userdata('userLogin') == TRUE))  
    { 
        redirect(site_url('users/dashboard'));  }

    if (isset($_POST['registration'])){

        $data['postdata'] = $_POST;

        if(!empty($_POST['firstname']) && !empty($_POST['lastname']) && 
        !empty($_POST['email']) && !empty($_POST['password']) && 
        !empty($_POST['organization']) && !empty($_POST['country']) && 
        !empty($_POST['address'])){ 

            $checkEmail = $this->User_model->checkEmail();

            if($checkEmail==true){

                $this->session->set_flashdata('error', '<p><font>
        This Email id is already registered!</font></p>');

            }else{

                $un = str_replace(' ', '',$_POST['firstname'].$_POST['lastname']);
                //remove all spaces
                $unwsc  =  preg_replace('/[^A-Za-z0-9\-]/', '', $un); 
                // Removes special chars.

                $checkusername = $this->User_model->checkusername($unwsc);

                if($checkusername==true){

                    $username = $this->getUserName($unwsc);

                }else{
                    $username = $unwsc;
                }

                $data['code'] = rand(0,100000); 
                $data['username'] = $_POST['firstname'];

                $this->User_model->saveUser($username,$data['code']);

                mkdir("/var/www/html/users/".$username);

                /*
                $fromemail="_my_organisation's_email_";
                $subject = "Registration Confirmation";

                //this was the email sender that i used initially
                            //it's codeigniter's built in email library. but after a
                        //while, emails stopped being delivered.

                $this->load->library('email');  
                $config['mailtype'] = 'html'; 
                $this->email->initialize($config);
                $this->email->to($_POST['email']);
                $this->email->from($fromemail, "_my_organisation's_email_");
                $this->email->subject($subject);                    
                $body = $this->load->view('email/register.php',$data,TRUE);
                $this->email->message($body);                   
                $this->email->send();
                */                                      

                $subject = "Registration Confirmation";
                $body = $this->load->view('email/register.php',$data,TRUE);

                //using mailgun api                                 

                # Instantiate the client.
                $mgClient = new Mailgun('_my_mailgun_key_');
                $domain = "_my_maigun_domain_";

                # Make the call to the client.
                $result = $mgClient->sendMessage($domain, array(
                'from'    => 'NO REPLY <_my_organisation's_email_>',
                'to'      => 'new user <_authorized_recipient_>',
                'subject' => 'Mailgun test',
                'text'    => 'testing email sender'
                ));


                $this->session->set_flashdata('success','<p><font>Thanksfor registration!                   </font></p>');
                redirect(site_url('register/complete'));    
            }

        }else{
            $this->session->set_flashdata('error', '<p><font>
            Missing Some Fields!</font></p>');
        }
    }   
    $data['title']='';
    $data['param']=$param;
    $this->load->view('registration/index',$data);
}
function getUserName($string) {
    $result = $string;
    for ($i = 1; $i < 100; $i++) {
         $userChecking = $this->User_model->checkusername($string.$i);
         if(empty($userChecking)){
            $result = $string.$i;
            break;
         }
    }
    return $result;
}
}
?>

更新PHP至5.6.30版本后问题已解决。在与 Godaddy 的客户支持长时间交谈后,他们建议我更新 PHP。之后完美运行。