我正在尝试使用mailgun api从我的网站发送用户注册确认电子邮件。我的网站位于共享主机上。当我在localhost(WAMP服务器)上测试时,mailgun api似乎工作得很好。当我尝试在我的源代码中使用api时,即在控制器内部,我得到语法错误。共享主机是基于Linux(CentOS)的服务器。
这是错误消息。
解析错误:语法错误,第78行/var/www/html/log2pdf/mailgun/vendor/guzzlehttp/psr7/src/functions.php中的意外'['
由于这是一个语法错误,我在linux服务器上单独下载并安装了mailgun dependancies(即composer,guzzle adapter等),因为我最初从我的localhost(windows)复制了文件并且在 这些文件对于windows和linux来说是不同的印象。但这也没有任何区别。
在localhost(WAMP)上运行php 5.6.25,在共享主机(CentOS)上运行php 5.3.3。所有的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;
}
}
?>
答案 0 :(得分:3)
将PHP更新到版本5.6.30后问题得以解决。经过与Godaddy的客户支持长时间的谈话,他们建议我更新我的PHP。它之后运作得很好。