出于安全原因,已禁用消息“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

Meteor 中的安全方法

Meteor 中的安全方法

企业如何选择安全的即时通讯软件?

Joomla 出于啥安全原因添加表前缀?