atVSG

0011001000110100

وحید امیری مطلق

توسعه دهنده وب و موبایل

نصب و راه اندازی Apache + PHP-FPM با استفاده از Homebrew


apache + phpfpm on macos

بعد از مدت ها سر و کله زدن با MAMP چند ساعت پیش مجبور شدم ماژول mongodb رو آپدیت کنم. متاسفانه نسخه جدید بخاطر تغییرات macOS High Sierra در زمینه SSL با Apache کار نمیکنه بنابراین اگر میخواید PHP رو با mod_php اجرا کنید با مشکل مواجه میشید. راه حلش هم یا استفاده از نسخه های قدیمی تر php_mongodb یا اجرای PHP در یک پروسه جداگانه و مستقل از Apache مثل PHP-FPM. برای من راه اول مناسب نیست بنابراین مجبور شدم MAMP رو به کلی پاک کنم و Apache و PHP رو هم از اول نصب کنم. در این مطلب توضیح میدم که چطوری PHP-FPM رو به همراه Apache روی macOS با استفاده از ابزار Homebrew نصب کنید.



مثال های استفاده از MongoDB + PHP


mongodb and php

خودم که میخواستم استفاده از MongoDB رو شروع کنم در کمال تعجب دیدم که تقریبا اصلا نمیشه نمونه کد به روز پیدا کرد. وقتی هم میخواید از PHP با MongoDB استفاده کنید کار از این هم سخت تر میشه به خاطر اینکه اکثر کاربران MongoDB از پلتفرم Node.js استفاده میکنند. دلیل دیگش هم اینه که PHP یک درایور قدیمی برای MongoDB داشت که الان پشتیبانی نمیشه و مثال هایی هم که توی وب پیدا میشن هنوز برای درایور جدید به روز نشدند.

الان که با آزمایش و خطا تونستم MongoDB رو یاد بگیرم تصمیم گرفتم پر استفاده ترین سناریو ها رو در قالب تیکه کد های ساده و روون بنویسم تا بقیه مجبور نباشند مثل من ساعت ها وقت بزارند. همه رو در GitHub گذاشتم که اگه ایرادی هم بود داخلشون، همونجا گزارش بشه و حل.

مشاهده صفحه مثال ها در GitHub


ترفند های کاربردی Apache با استفاده از فایل htaccess


htaccess

فایل htaccess (که با یک نقطه شروع میشه) یک فایل تنظیمات مخصوص وب سرور آپاچی است که البته توسط برخی وب سرور های دیگر هم تا حدودی پشتیبانی میشه. مزیت اصلی استفاده از این فایل به جای تغییر تنظیمات Apache در سطح پایین تر، پرتابل بودن اون و امکان استفاده از آن در محیط هایی که دسترسی به نرم افزار های سیستمی از جمله وب سرور برای کاربران محدود شده، مثل هاست های اشتراکی است. در این پست چند ترفند کاربردی رو برای بهبود سئو و سرعت سایت هایی که قابلیت استفاده از htaccess رو دارند، بررسی میکنیم.



حل مشکل UnexpectedValueException in Response.php line 395 در Laravel 5


داشتم یک ماژول سرور رو برای NewsGet آپدیت میکردم که وقتی اجراش کردم:

laravel stack trace

stack trace ها با این که طولانی و خسته کننده هستن، میتونن اطلاعات زیادی راجع به نحوه ی به وجود آمدن مشکلات و exception ها بدن اما نه در این مورد.

رفع مشکل در ادامه مطلب.



معرفی کلاس های jDateTimePlus و EasyDateTime برای PHP


jDateTimePlus

کلاس jDateTimePlus بر پایه ی نسخه 2.2.0 کلاس jDateTime هست. هدف از نوشتنش برطرف کردن بعضی مشکلات کلاس قبلی و به روز کردن الگوریتم توابع تبدیل شمسی به میلادی و میلادی به شمسی با استفاده از توابع jdf 2.60 بود. کلاس jDateTime توسط سالار کابلی ساخته شده. انصافا کار خوبی کرده و مستندات خوبی هم داره به خاطر همین دیگه من تکرار مکررات نمیکنم و برای نحوه ی استفاده میتونید مستندات سالار رو در وبلاگش بخونید.

صفحه jDateTimePlus در گیت هاب + راهنمای نصب و استفاده

اما برسیم به اصل مطلب. کلاس EasyDateTime!

 

EasyDateTime

 

EasyDateTime در واقع یک کلاس سطح بالا برای مخفی کردن اون پیچیدگی هایی از کلاس jDateTimePlus هست که عملا برای کاربر نهایی استفاده کننده گیج کننده هستن و غیر ضروری. این یک کلاس آماده برای ورورد و استفاده سریع و راحت در اپ های واقعیه. تعداد زیادی از متود های jDateTimePlus پارامتر Timezone رو دریافت میکنن که این کار کاملا بیهوده هست و نیازی بهش نیست. خیلی از متود ها هم تعریف دقیقی از کارکردشون در دنیای واقعی (!) ارائه نمیکنن و مثلا به ندرت به طور مستقیم مورد استفاده قرار میگیرن. این کلاس علاوه بر موارد قبلی، ظاهر بسیار تمیزی داره و همچنین یکی دو متود جدید هم معرفی میکنه که کاملا کاربردی هستن. (تبدیل DateTime شمسی به میلادی و فرمت اون، تبدیل Timezone ها به یکدیگر)

صفحه ی EasyDateTime در گیت هاب + راهنمای نصب و استفاده

توضیحات در ادامه مطلب.



ایجاد پروژه ی Laravel در PhpStorm


laravel

برای همه مشخصه که بهترین IDE برای PHP برنامه ی Cross-Platform شرکت JetBrains به نام PhpStorm هست. این برنامه علاوه بر هماهنگی کامل با جدیدترین نسخه های PHP، با پکیج منیجر معروف PHP یعنی Composer هم هماهنگی کامل داره. در این پست نحوه ی ایجاد یک پروژه ی فریمورک Laravel رو در این برنامه توضیح میدم. با این روش میشه هر پکیجی که در Composer موجوده رو با استفاده از PhpStorm دانلود کرد.