出于安全原因,已禁用消息“mail() 引发的 ErrorException
Posted
技术标签:
【中文标题】出于安全原因,已禁用消息“mail() 引发的 ErrorException【英文标题】:ErrorException thrown with message "mail() has been disabled for security reasons 【发布时间】:2020-10-19 00:07:35 【问题描述】:我正在尝试设置一个 laravel 网站,并且我已经能够完成一些工作,但后来我遇到了这个错误。
出于安全原因,mail() 已被禁用
我已尝试联系我的托管服务提供商以协助激活该功能,但他们让我大吃一惊,说他们无法激活该功能,我应该尝试修改邮件的标题,这样就不需要了。
请问我怎么能做到这一点,因为我不是邮件 php 方面的专家。
这是我的错误:
ErrorException thrown with message "mail() has been disabled for security reasons"
Stacktrace:
#57 ErrorException in /home/zcashcom/public_html/invest/core/app/Http/helpers/helpers.php:19
#56 mail in /home/zcashcom/public_html/invest/core/app/Http/helpers/helpers.php:19
这是文件的完整代码,有问题的helpers.php
<?php
use App\General;
use App\User;
use App\MemberExtra;
function send_email($to, $subject, $name, $message)
$general = General::first();
if ($general->email_nfy == 1)
$headers = "From: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "Reply-To: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$template = $general->emessage;
$mm = str_replace("name",$name,$template);
$message = str_replace("message",$message,$mm);
mail($to, $subject, $message, $headers);
else
return;
function send_sms( $to, $message)
$gnl = General::first();
if($gnl->sms_nfy == 1)
$sendtext = urlencode("$message");
$appi = $gnl->smsapi;
$appi = str_replace("number",$to,$appi);
$appi = str_replace("message",$sendtext,$appi);
$result = file_get_contents($appi);
return;
function updateDepositBV($id, $deposit_amount)
while($id !="" || $id != "0")
if(isMemberExists($id))
$posid = getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentBV = MemberExtra::where('user_id', $posid)->first();
if($position == "L")
$new_lbv = $currentBV->left_bv + $deposit_amount ;
$new_rbv = $currentBV->right_bv;
else
$new_lbv = $currentBV->left_bv;
$new_rbv = $currentBV->right_bv + $deposit_amount ;
MemberExtra::where('user_id', $posid)
->update([
'left_bv' => $new_lbv,
'right_bv' => $new_rbv,
]);
$id = $posid;
else
break;
//while
return 0;
function updatePaid($id)
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentCount = MemberExtra::where('user_id',$posid )->first();
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position == "L")
$new_lfree = $new_lfree-1;
$new_lpaid = $new_lpaid+1;
else
$new_rfree = $new_rfree-1;
$new_rpaid = $new_rpaid+1;
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
else
break;
return 0;
function treeeee($id ='', $uid='')
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid=="0")
break;
if($posid==$uid)
return true;
$id =$posid;
else
break;
//while
return 0;
function printBV($id)
$cbv = MemberExtra::where('user_id', $id)->first();
$rid = User::whereId($id)->first();
$rnm = User::where('id', $rid->referrer_id)->first();
echo "<b>Referred By:</b> $rnm->username <br>";
echo "<b>Current BV:</b> L-$cbv->left_bv | R-$cbv->right_bv <br>";
function printBelowMember($id)
$bmbr = MemberExtra::where('user_id', $id)->first() ;
echo "<b>Paid Member Below:</b> L-$bmbr->left_paid | R-$bmbr->right_paid <br>";
echo "<b>Free Member Below:</b> L-$bmbr->left_free | R-$bmbr->right_free <br>";
function updateMemberBelow($id='', $type='')
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid=="0")
break;
$position=getPositionParent($id);
$currentCount = MemberExtra::where('user_id', $posid)->first() ;
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position=="L")
if($type=='FREE')
$new_lfree = $new_lfree + 1;
else
$new_lpaid = $new_lpaid+1;
else
if($type=='FREE')
$new_rfree = $new_rfree + 1;
else
$new_rpaid = $new_rpaid+1;
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
else
break;
return 0;
function getParentId($id)
$count = User::whereId($id)->count() ;
$posid = User::whereId($id)->first();
if ($count == 1)
return $posid->posid;
else
return 0;
function getPositionParent($id)
$count = User::whereId($id)->count();
$position = User::whereId($id)->first() ;
if ($count == 1)
return $position->position;
else
return 0;
function getLastChildOfLR($parentid ,$position)
$childid = getTreeChildId($parentid, $position);
if($childid!="-1")
$id = $childid;
else
$id = $parentid;
while($id!=""||$id!="0")
if(isMemberExists($id))
$nextchildid = getTreeChildId($id, $position);
if($nextchildid == "-1")
break;
else
$id = $nextchildid;
else break;
return $id;
function getTreeChildId($parentid ,$position)
$cou = User::where('posid', $parentid)->where('position', $position)->count();
$cid = User::where('posid', $parentid)->where('position', $position)->first();
if ($cou == 1)
return $cid->id;
else
return -1;
function isMemberExists($id)
$count = User::where('id', $id)->count();
if ($count == 1)
return true;
else
return false;
function Short_Text($data,$length)
$first_part = explode(" ",$data);
$main_part = strip_tags(implode(' ',array_splice($first_part,0, $length)));
return $main_part ."...." ;
function ImageCheck($ext)
if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'bnp')
$ext = "";
return $ext;
function NewFile($name, $data)
$fh = fopen($name, "w");
fwrite($fh,$data);
fclose($fh);
function ViewFile($name)
$fh = fopen($name, "r");
$data = fread($fh,filesize($name));
fclose($fh);
return $data;
function Find_fist_int($string)
preg_match_all('!\d+!', $string, $matches);
if($matches[0] != "")
foreach($matches[0] as $key => $value)
$url = $value;
return $url;
break;
function Replace($data)
$data = str_replace("'", "", $data);
$data = str_replace("!", "", $data);
$data = str_replace("@", "", $data);
$data = str_replace("#", "", $data);
$data = str_replace("$", "", $data);
$data = str_replace("%", "", $data);
$data = str_replace("^", "", $data);
$data = str_replace("&", "", $data);
$data = str_replace("*", "", $data);
$data = str_replace("(", "", $data);
$data = str_replace(")", "", $data);
$data = str_replace("+", "", $data);
$data = str_replace("=", "", $data);
$data = str_replace(",", "", $data);
$data = str_replace(":", "", $data);
$data = str_replace(";", "", $data);
$data = str_replace("|", "", $data);
$data = str_replace("'", "", $data);
$data = str_replace('"', "", $data);
$data = str_replace("?", "", $data);
$data = str_replace(" ", "_", $data);
$data = str_replace("'", "", $data);
$data = str_replace(".", "-", $data);
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace("__", "-", $data));
return str_replace("_", "-", $data);
**根据第一个响应进行编辑
我意识到错误还调用了其他几个文件
RegisterController.php: 104 & 141。我真的不知道这完全意味着什么**
<?php
namespace App\Http\Controllers\Auth;
use App\ChargeCommision;
use App\Income;
use App\MemberExtra;
use App\User;
use App\General;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
class RegisterController extends Controller
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
$this->middleware('guest');
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
return Validator::make($data, [
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'referrer_id' => 'required',
'position' => 'required',
'first_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'last_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'birth_day' => 'required',
'mobile' => 'required',
'street_address' => 'required',
'city' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'post_code' => 'required|numeric|min:0',
'country' => 'required',
'username' => 'required',
]);
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
$pin = substr(time(), 4);
$ref_id = $data['referrer_id'];
$poss = $data['position'];
$posid = getLastChildOfLR($ref_id,$poss);
// $general = General::first();
$message = '<tr>';
$message .='<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;color:green;">Our warmest congratulations on your new account opening! This only shows that you have grown your business well. I pray for your prosperous.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have taken this path knowing that you can do it. Good luck with your new business. I wish you all the success and fulfillment towards your goal.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your username is '.$data['username'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your password is '.$data['password'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px; color:red;">Remember, never share your password with otherone. And you are agree with our Terms and Policy.</p>';
$message .='</td>';
$message .='</tr>';
send_email($data['email'], 'Account Created Successfully', $data['first_name'], $message);
$sms = 'Congratulation, for registration. Your username is '.$data['username'].'. Your password is '.$data['password'].'';
send_sms($data['mobile'], $sms);
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'referrer_id' => $data['referrer_id'],
'position' => $data['position'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'mobile' => $data['mobile'],
'street_address' => $data['street_address'],
'city' => $data['city'],
'post_code' => $data['post_code'],
'country' => $data['country'],
'username' => $data['username'],
'birth_day' => date('Y-m-d',strtotime($data['birth_day'])),
'join_date' => Carbon::today(),
'balance' => 0,
'status' => 1,
'paid_status' => 0,
'ver_status' => 0,
'ver_code' => $pin,
'forget_code' => 0,
'posid' => $posid,
'tauth' => 0,
'tfver' => 1,
'emailv' => 0,
'smsv' => 1,
]);
public function register(Request $request)
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
MemberExtra::create([
'user_id' => $user['id'],
'left_paid' => 0,
'right_paid' => 0,
'left_free' => 0,
'right_free' => 0,
'left_bv' => 0,
'right_bv' => 0,
]);
updateMemberBelow($user['id'], 'FREE');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
并重定向ifAuthenticated.php:24
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
if (Auth::guard($guard)->check())
return redirect('/home');
return $next($request);
错误消息的图像
这是mail.php文件
<?php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
从评论中的响应配置后,我收到一条新的错误消息
Call to undefined function App\Http\Controllers\Auth\getLastChildOfLR()
RegisterControllers.php:87
<?php
namespace App\Http\Controllers\Auth;
use App\ChargeCommision;
use App\Income;
use App\MemberExtra;
use App\User;
use App\General;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
class RegisterController extends Controller
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
$this->middleware('guest');
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
return Validator::make($data, [
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'referrer_id' => 'required',
'position' => 'required',
'first_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'last_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'birth_day' => 'required',
'mobile' => 'required',
'street_address' => 'required',
'city' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÜŸÑÆŒa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'post_code' => 'required|numeric|min:0',
'country' => 'required',
'username' => 'required',
]);
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
$pin = substr(time(), 4);
$ref_id = $data['referrer_id'];
$poss = $data['position'];
$posid = getLastChildOfLR($ref_id,$poss);
// $general = General::first();
$message = '<tr>';
$message .='<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;color:green;">Our warmest congratulations on your new account opening! This only shows that you have grown your business well. I pray for your prosperous.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have taken this path knowing that you can do it. Good luck with your new business. I wish you all the success and fulfillment towards your goal.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your username is '.$data['username'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your password is '.$data['password'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px; color:red;">Remember, never share your password with otherone. And you are agree with our Terms and Policy.</p>';
$message .='</td>';
$message .='</tr>';
send_email($data['email'], 'Account Created Successfully', $data['first_name'], $message);
$sms = 'Congratulation, for registration. Your username is '.$data['username'].'. Your password is '.$data['password'].'';
send_sms($data['mobile'], $sms);
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'referrer_id' => $data['referrer_id'],
'position' => $data['position'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'mobile' => $data['mobile'],
'street_address' => $data['street_address'],
'city' => $data['city'],
'post_code' => $data['post_code'],
'country' => $data['country'],
'username' => $data['username'],
'birth_day' => date('Y-m-d',strtotime($data['birth_day'])),
'join_date' => Carbon::today(),
'balance' => 0,
'status' => 1,
'paid_status' => 0,
'ver_status' => 0,
'ver_code' => $pin,
'forget_code' => 0,
'posid' => $posid,
'tauth' => 0,
'tfver' => 1,
'emailv' => 0,
'smsv' => 1,
]);
public function register(Request $request)
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
MemberExtra::create([
'user_id' => $user['id'],
'left_paid' => 0,
'right_paid' => 0,
'left_free' => 0,
'right_free' => 0,
'left_bv' => 0,
'right_bv' => 0,
]);
updateMemberBelow($user['id'], 'FREE');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
【问题讨论】:
【参考方案1】:如果出于安全原因停用邮件,则不应使用它。事实上,如果你用谷歌搜索这个主题,你会发现一些严重的结果,为什么你不应该使用它。
我希望您的托管服务商有一个电子邮件帐户,对吧?那么你为什么不想使用 laravel 的邮件功能呢?
在您的 .env 文件中,为您的电子邮件帐户设置正确的参数:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=name@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl
有时您还需要定义 MAIL_FROM_ADDRESS 参数。如果您不确定是否在配置的 mail.php 文件中找到所有可能的配置选项。
然后要使用 Laravel 发送电子邮件,您可以执行以下操作
Mail::raw('your message', function ($message) use ($request)
$message->to('email@receiver.com');
$message->from('youremail@sender.com');
$message->subject("Email subject");
);
我不知道你想要达到什么目的,但如果你只想发送一些简单的信息,也许你应该使用 laravel 通知。
<?php
//edited
use App\General;
use App\User;
use App\MemberExtra;
function send_email($to, $subject, $name, $message)
$general = General::first();
if ($general->email_nfy == 1)
$headers = "From: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "Reply-To: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$template = $general->emessage;
$mm = str_replace("name",$name,$template);
$message = str_replace("message",$message,$mm);
//mail($to, $subject, $message, $headers);
else
return;
function send_sms( $to, $message)
$gnl = General::first();
if($gnl->sms_nfy == 1)
$sendtext = urlencode("$message");
$appi = $gnl->smsapi;
$appi = str_replace("number",$to,$appi);
$appi = str_replace("message",$sendtext,$appi);
$result = file_get_contents($appi);
return;
function updateDepositBV($id, $deposit_amount)
while($id !="" || $id != "0")
if(isMemberExists($id))
$posid = getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentBV = MemberExtra::where('user_id', $posid)->first();
if($position == "L")
$new_lbv = $currentBV->left_bv + $deposit_amount ;
$new_rbv = $currentBV->right_bv;
else
$new_lbv = $currentBV->left_bv;
$new_rbv = $currentBV->right_bv + $deposit_amount ;
MemberExtra::where('user_id', $posid)
->update([
'left_bv' => $new_lbv,
'right_bv' => $new_rbv,
]);
$id = $posid;
else
break;
//while
return 0;
function updatePaid($id)
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentCount = MemberExtra::where('user_id',$posid )->first();
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position == "L")
$new_lfree = $new_lfree-1;
$new_lpaid = $new_lpaid+1;
else
$new_rfree = $new_rfree-1;
$new_rpaid = $new_rpaid+1;
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
else
break;
return 0;
function treeeee($id ='', $uid='')
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid=="0")
break;
if($posid==$uid)
return true;
$id =$posid;
else
break;
//while
return 0;
function printBV($id)
$cbv = MemberExtra::where('user_id', $id)->first();
$rid = User::whereId($id)->first();
$rnm = User::where('id', $rid->referrer_id)->first();
echo "<b>Referred By:</b> $rnm->username <br>";
echo "<b>Current BV:</b> L-$cbv->left_bv | R-$cbv->right_bv <br>";
function printBelowMember($id)
$bmbr = MemberExtra::where('user_id', $id)->first() ;
echo "<b>Paid Member Below:</b> L-$bmbr->left_paid | R-$bmbr->right_paid <br>";
echo "<b>Free Member Below:</b> L-$bmbr->left_free | R-$bmbr->right_free <br>";
function updateMemberBelow($id='', $type='')
while($id!=""||$id!="0")
if(isMemberExists($id))
$posid=getParentId($id);
if($posid=="0")
break;
$position=getPositionParent($id);
$currentCount = MemberExtra::where('user_id', $posid)->first() ;
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position=="L")
if($type=='FREE')
$new_lfree = $new_lfree + 1;
else
$new_lpaid = $new_lpaid+1;
else
if($type=='FREE')
$new_rfree = $new_rfree + 1;
else
$new_rpaid = $new_rpaid+1;
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
else
break;
return 0;
function getParentId($id)
$count = User::whereId($id)->count() ;
$posid = User::whereId($id)->first();
if ($count == 1)
return $posid->posid;
else
return 0;
function getPositionParent($id)
$count = User::whereId($id)->count();
$position = User::whereId($id)->first() ;
if ($count == 1)
return $position->position;
else
return 0;
function getLastChildOfLR($parentid ,$position)
$childid = getTreeChildId($parentid, $position);
if($childid!="-1")
$id = $childid;
else
$id = $parentid;
while($id!=""||$id!="0")
if(isMemberExists($id))
$nextchildid = getTreeChildId($id, $position);
if($nextchildid == "-1")
break;
else
$id = $nextchildid;
else break;
return $id;
function getTreeChildId($parentid ,$position)
$cou = User::where('posid', $parentid)->where('position', $position)->count();
$cid = User::where('posid', $parentid)->where('position', $position)->first();
if ($cou == 1)
return $cid->id;
else
return -1;
function isMemberExists($id)
$count = User::where('id', $id)->count();
if ($count == 1)
return true;
else
return false;
function Short_Text($data,$length)
$first_part = explode(" ",$data);
$main_part = strip_tags(implode(' ',array_splice($first_part,0, $length)));
return $main_part ."...." ;
function ImageCheck($ext)
if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'bnp')
$ext = "";
return $ext;
function NewFile($name, $data)
$fh = fopen($name, "w");
fwrite($fh,$data);
fclose($fh);
function ViewFile($name)
$fh = fopen($name, "r");
$data = fread($fh,filesize($name));
fclose($fh);
return $data;
function Find_fist_int($string)
preg_match_all('!\d+!', $string, $matches);
if($matches[0] != "")
foreach($matches[0] as $key => $value)
$url = $value;
return $url;
break;
function Replace($data)
$data = str_replace("'", "", $data);
$data = str_replace("!", "", $data);
$data = str_replace("@", "", $data);
$data = str_replace("#", "", $data);
$data = str_replace("$", "", $data);
$data = str_replace("%", "", $data);
$data = str_replace("^", "", $data);
$data = str_replace("&", "", $data);
$data = str_replace("*", "", $data);
$data = str_replace("(", "", $data);
$data = str_replace(")", "", $data);
$data = str_replace("+", "", $data);
$data = str_replace("=", "", $data);
$data = str_replace(",", "", $data);
$data = str_replace(":", "", $data);
$data = str_replace(";", "", $data);
$data = str_replace("|", "", $data);
$data = str_replace("'", "", $data);
$data = str_replace('"', "", $data);
$data = str_replace("?", "", $data);
$data = str_replace(" ", "_", $data);
$data = str_replace("'", "", $data);
$data = str_replace(".", "-", $data);
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace("__", "-", $data));
return str_replace("_", "-", $data);
如果您在 .env 文件中配置了您的电子邮件帐户,这将很难奏效。
【讨论】:
感谢您的回复,我已更新问题并包含错误消息以及我的 mail.php 文件。当用户尝试在网站上注册时出现错误。它旨在发送邮件以进行验证。请协助澄清您的意思。谢谢 你需要使用 Laravel 的 Mail Facade... 所以你通过添加“use Mail;”来导入这个 Facade在页面顶部 - 好吗?然后您将要发送的邮件放在相应的 Mail::to()... 中,我也不明白您是从哪里发送的,从控制器发送的? 是的,我猜它正在调用控制器文件。我添加了几个我猜它正在调用的文件。请问我会在哪里添加那行代码。如果可能,请编辑发送的代码以协助修改,我将非常高兴。感谢您的宝贵时间 我更新了我的答案,还注意到我在 sn-p 中制作的 cmets。希望对您有所帮助。 谢谢。我现在就试一试。最后一件事,我可以使用从我的 cpanel 创建的电子邮件帐户,对吗?【参考方案2】:嗯,这实际上是另一个问题。 helpers.php 文件在哪里?是在app文件夹下吗?它是如何包含在内的?您从错误中看到 php namespace 是当前命名空间下的函数,所以我猜该文件的包含/自动加载方式有问题?我的 helpers.php 文件位于 app 文件夹中,然后我通过 composer(在 composer.json 中)加载它。它看起来像这样:
"autoload":
"files": [
"app/helpers.php"
],
"psr-4":
"App\\": "app/"
,
"classmap": [
"database/seeds",
"database/factories"
]
,
如果您更改该文件,您必须运行 composer dump-autoload
...如果文件看起来已经像这样,运行命令也没有什么坏处,因为可能出了点问题。
【讨论】:
这个答案也很有帮助。之后我遇到了一些错误,但这有助于解决这个问题以上是关于出于安全原因,已禁用消息“mail() 引发的 ErrorException的主要内容,如果未能解决你的问题,请参考以下文章
出于安全原因,Composer escapeshellarg() 已被禁用
您上传了一个可调试的 APK。出于安全原因,您需要禁用调试才能在 Google Play 中发布 - 将 apk 上传到 google play