آموزش php (وبلاگ یک پی اچ پی کار)

آموزش زبان برنامه نویسی php , html , css , تجربیات یک برنامه نویس

۱۱ مطلب در آذر ۱۳۹۷ ثبت شده است

آموزش نصب لاراول 5.7 بر روی هاست

کل فایلهای پروژه رو غیر از public یه level بالاتر از public_html سرور و داخل یه فولدری بنام laravel قرار بدید
و محتوای داخل فولدر public لاراول رو هم از فولدرش بیرون بیارید و داخل public_html سرور بریزید سپس وارد فایل index.php در داخل public_html بشید و دستور مربوط به اتولود رو به شکل زیر تغییر بدید:

 

 
require dirname(dirname(FILE)).'/laravel/vendor/autoload.php';

تا اینجای کار رو که انجام دادید سایت به درستی بالا خواهد اومد ولی شما با تابع File::exists لاراول مشکل خواهید داشت و شما نخواهید توانست فایل های assets پروژه خودتون که داخل public_html قرار دارند رو  از نظر موجود بودن چک کنید که برای حل این مشکل و اشاره صحیح این تابع به مسیر گفته شده باید تغییرات زیر رو هم انجام بدید:

برای اینکه File::exists به مسیر زیر نگاه کنه 
"/home/mydomain/public_html"

وارد فایل index.php  شوید و تابع public_path رو override کنید ، به شکل زیر :

 

$app->bind('path.public', function() {
return __DIR__;
});

 

 

محتوای فایل index.php  بصورت زیر خواهد بود :

 

<?php

 

/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <taylor@laravel.com>
*/

 

define('LARAVEL_START', microtime(true));

 

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/

 

require dirname(dirname(__FILE__)).'/laravel/vendor/autoload.php';

 

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

 

$app = require_once dirname(dirname(__FILE__)).'/laravel/bootstrap/app.php';



 

// بازنویسی تابع public_path
$app->bind('path.public', function() {
return __DIR__;
});








 

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

 

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

 

$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);

 

$response->send();

 

$kernel->terminate($request, $response);
۱۵ آذر ۹۷ ، ۰۹:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

اتصال به مای اس کیو ال 8 (mysql 8) با لاراول

در نسخه 8 مای اس کیو ال ما شاهد تغییرات اساسی در ساختار داده ای بانک اطلاعاتی هستیم

اگر شما هم تمایل دارید از این ورژن در لاراول استفاده کنید شاید موقع کانکت شدن به دیتابیس به ارورهایی برخورد کنید که با اجرای دستور زیر میتونید مایگریشن های خودتونو براحتی روی دیتابیس اجرا کنید و ارورهارو مرتفع کنید.

خطایی که شما بهش برخرود میکنید به شکل زیر هستش :

Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = laravel_tut and table_name = migrations)

  at /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel_tut", "root", "fdgkadgaf9g7ayaig9fgy9ad8fgu9adfg9adg", [])
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

 

دلیل اش اینه که لاراول یا بهتر بگم php از caching_sha2_password

چیزی نمیفهمه پس باید پسورد ورود به دیتابیس رو به شکل زیر معرفی کنید :

ALTER USER 'yourusername'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'new_password'

پس کافیه فقط این اسکریپت رو در دیتابیس تون اجرا کنید و مشکل برطرف بشه و لاراول براحتی به دیتابیس متصل شه 

موفق و موید باشید.

ارادتمند مهدی حسامی

 

 

۱۳ آذر ۹۷ ، ۰۰:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

تعیین حداکثر زمان (time out) برای کلاس PDO در لاراول

سلام دوستان خوبم ، میخوام در این آموزش یک تجربه دیگر هم با شما به اشتراک بگذارم

شاید شما هم در پروژه های خودتون قصد داشته باشید به یک سرور خارجی (دیتابیس) متصل بشید و عملیات CRUD بروی آن انجام بدید و یا حتی میخواهید به دیتابیس لوکال یا محلی خودتون متصل بشید ولی این سرور بنابه دلایلی قطع میباشد ، در حالت پیشفرض لاراول بر اساس حداکثر زمان مجاز اجرای دستورات که بر روی برنامه وبسرور تنظیم شده عمل کرده و شمارو برای مدت زمان زیادی منتظر خواهد گذاشت تا در به دیتابیس متصل شود و برنامه شما یجورایی هنگ خواهد کرد و کنترل اون از دست شما خارج خواهد شد که این سبب میشه تا برای دستورات دیگه بعد از دستور اتصال، زمان انتظار زیادی جهت اجرا شدنشون بوجود بیاد و سرعت سیستم بشدت پائین خواهد اومد. یا در سناریویی دیگه شما قصد دارید مثلا آنلاین بودن 5 تا سرور رو چک کنید ، خب شما با یک پارامتر یا آپشن در کلاس PDO میتونید یک زمان حداکثری برای منتظر موندن این کلاس جهت ارتباط تعیین کنید تا در صورت موفقیت آمیز بودن اتصال عملیات مورد نظر شما بر روی دیتابیس انجام بشه و در صورت عدم اتصال هم سریع به شما یک خطایی رو برگردونه که با هندل کردن خطا سرور رو از حالت کرش نجات بدید.

برای اینکار وارد مسیر زیر در پروژه لاراولی (5.7) خود شوید و در داخل فایل connector.php حداکثر زمان انتظار برای اتصال رو در قسمت آپشن های کلاس اتصال تعیین کنید :

 

تایم اوت pdo

 
تنظیم زیر رو اضافه نمائید :
تایم اوت اتصال در لاراول
 
در پایان هم دستور زیر رو در کامپوزر اجرا کنید تا اتولود دوباره جنریت کنه همه چی رو

composer dump

موفق و موید باشید
ارادتمند مهدی حسامی
 
۰۴ آذر ۹۷ ، ۱۹:۳۱ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی