آنچه در این مقاله میخوانید
آموزش سریع نصب Composer در دبیان
۵ بهمن ۱۴۰۴
اگر مدتی در PHP کد زده باشید، احتمالا با ساخت یکسری قابلیت تکراری مانند ارتباط با دیتابیس، اعتبارسنجی ورودیها یا مدیریت تاریخها مواجه شدهاید. در گذشته اضافه کردن کتابخانه به پروژههای PHP سخت بود، و استاندارد خاصی وجود نداشت و توسعهدهندگان مجبور بودند همهچیز را از صفر بنویسند؛ بهطور مثال، یک لایه انتزاع بانک اطلاعاتی برای هر نوع برنامه پی اچ پی ضروری بود، اما هیچ کتابخانهای برای آن وجود نداشت. اینجا بود که کامپوزر وارد ماجرا شد، و فرایند نصب کتابخانهها و پکیجها را آسان کرد. این مدیر پکیج (Composer)، محبوبیت بینظیری را بدست آورده و به یک استاندارد برای مدیریت وابستگیها در برنامههای پی اچ پی تبدیل شده است. اگر علاقهمند به آموزش نصب کامپوزر و نحوه استفاده از این ابزار کاربردی هستید، این مطلب را از دست ندهید و تا پایان آموزش همراه ما باشید:)
آنچه در ادامه میخوانید:
- کامپوزر (Composer) در php چیست؟
- ویژگیهای اصلی کامپوزر
- چرا باید از کامپوزر(Composer)
- پیشنیازها
- مرحله اول: نصب وابستگیهای کامپوزر
- مرحله دوم: دانلود و نصب کامپوزر
- جمعبندی
- سوالات متداول

کامپوزر (Composer) در php چیست؟
کامپوزر(Composer) یک ابزار مدیریت وابستگی (Dependency Manager) برای زبان PHP است. این ابزار به شما کمک میکند تا کتابخانهها، پکیجها و ابزارهایی که پروژه شما به آنها نیاز دارد را بهصورت خودکار، نصب و مدیریت کنید.
ممکن است این سوال پیش بیاید که کامپوزر، پکیجهای مورد نیاز را از کجا دانلود میکند. در پاسخ باید گفت، منبع اصلی که کامپوزر از آن استفاده میکند، سایت Packagist است که به عنوان ریپازیتوری پیشفرض پروژههای پیاچپی میباشد، که توسعهدهندگان فریمورکها و کتابخانههای مختلف، پروژههای خود را در آن آپلود کردهاند، بهطوری که پس از آن، برنامهنویسان php میتوانند با استفاده از کامپوزر به پکیجهای قرار گرفته در این سایت دسترسی داشته باشند.
با هاست ابری PHP لیارا، بدون نیاز به پیکربندی و انجام تنظیمات، بهراحتی وبسایت خود را راهاندازی کنید.
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری PHP
ویژگیهای اصلی کامپوزر
یکپارچگی با ریپازیتوری Packagist: کامپوزر بهصورت مستقیم با ریپازیتوری Packagist که بزرگترین مخزن(Repository) پکیجهای php است، ارتباط دارد. این ریپازیتوری شامل پکیجهای مفید و کاربردی میباشد که بهراحتی میتوانید از آنها استفاده کنید.
مدیریت وابستگیها: شما میتوانید مشخص کنید که پروژه شما به چه کتابخانهها و نسخههایی نیاز دارد. کامپوزر بهطور خودکار وابستگیها را شناسایی و نصب میکند.
نسخهبندی دقیق: با استفاده از استاندارد Semantic، با کامپوزر میتوانید نسخههای خاصی از پکیجها را نصب یا بهروزرسانی کنید.
Autoloading: کامپوزر بهصورت خودکار فرایند Autoloading را مدیریت میکند. یعنی نیازی به دستی وارد کردن فایلها ندارید و همه کلاسها بهصورت خودکار در دسترس خواهند بود.
بهروزرسانی آسان: با یک دستور ساده، کامپوزر تمام وابستگیها را به آخرین نسخهای که با پروژه سازگار است، بهروزرسانی میکند.
برای آشنایی کامل با هاست رایگان PHP، مقاله زیر را از دست ندهید.
معرفی هاست رایگان PHP
چرا باید از کامپوزر (Composer) استفاده کنیم؟
همانطور که پیشتر گفتیم، استفاده از کامپوزر مزایای زیادی برای پروژههای php دارد، در ادامه برخی از دلایل استفاده از این ابزار را آوردهایم.
- مدیریت خودکار و دقیق وابستگیهای پروژه
- کنترل نسخهها با استاندارد Semantic Versioning
- autoload خودکار کلاسها با PSR-4
- دسترسی سریع به هزاران پکیج در Packagist
- تضمین سازگاری تیم با فایل composer.lock
- تفکیک وابستگیهای اصلی و توسعهای
- ادغام آسان با CI/CD و ابزارهای DevOps
- کاهش خطا با ساختار پایدار و نسخه دقیق
- بهروزرسانی سریع و امن با یک دستور
پیشنیازها
برای استفاده بهینه از مقاله، باید یک سرور مجازی با سیستمعامل دبیان ۱۲، همراه با یک کاربر non-root با دسترسیهای sudo و یک فایروال فعال داشته باشید.
آموزش کامل، نحوه نصب LAMP روی اوبونتو ۲۲.۰۴ را در مقاله زیر میتوانید مطالعه کنید.
نصب LAMP روی اوبونتو
مرحله اول: نصب وابستگیهای کامپوزر
در ابتدای نصب Composer، علاوه بر پکیجهایی که ممکن است بهصورت پیشفرض روی دبیان ۱۲ نصب شده باشند،به دو ابزار ضروری نیاز خواهید داشت:
php-cliبرای اجرای اسکریپتهای PHP از طریق خط فرمانunzipبرای استخراج فایلهای فشردهشده
قبل از هر اقدامی، پکیجهای موجود را با دستور زیر بهروزرسانی کنید:
sudo apt update
پس از آن، باید یک سری پکیج ضروری را نصب کنید تا کامپوزر بهدرستی روی سیستم کار کند:
curlبرای دانلود Composerphp-cliجهت اجرای Composer در خط فرمانphp-mbstringبرای پشتیبانی از توابع خاص موردنیاز برخی کتابخانههاgitکه Composer از اون برای کلون کردن وابستگیها استفاده میکنهunzipبرای باز کردن آرشیوهای فشردهشده
بهراحتی با اجرای دستور زیر، همه این ابزارها بهصورت یکجا نصب میشوند:
sudo apt install curl php-cli php-mbstring git unzip
حالا که تمام پیشنیازها را نصب کردید، میتوانید وارد مرحله نصب Composer شوید.
مرحله دوم: دانلود و نصب کامپوزر
پیش از نصب، مطمئن شوید که در دایرکتوری اصلی کاربر(Home Directory) قرار دارید، سپس با دستور curl، فایل Composer installer دانلود کنید:
cd ~
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
پس از آن، باید بررسی کنید که فایل installer دانلود شده با هش SHA-384 برای جدیدترین نسخه installer موجود در Composer Public Keys / Signatures مطابقت دارد.
با دستور curl، امضای جدیدترین نسخه را دریافت کرده و در یک متغیر shell ذخیره کنید:
HASH=`curl -sS https://composer.github.io/installer.sig`
حالا کد php زیر را اجرا کنید تا مطمئن شوید که اسکریپت نصب امن است و میتوانید آنرا اجرا کنید:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
پس از اجرای کد، خروجی زیر را مشاهده خواهید کرد:
Installer verified
نکته: اگر خروجی نشان دهد که، نصب کننده خراب (Installer corrupt) است، باید فرایند دانلود را بررسی کنید. یکی از دلایلی که چرا checksumها مهم است، همین است. در صورت وجود هرگونه تغییر در نسخه دانلودی شما، میتوانید بهراحتی با مقایسه checksum آن با نسخه اصلی، مشکل را شناسایی کنید.
پس از دانلود Composer installer، دستور زیر، کامپوزر را بهعنوان یک فرمان با نام composer در مسیر /usr/local/bin دانلود و نصب خواهد کرد:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
خروجی دریافتی:
All settings correct for using Composer
Downloading...
Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
معمولا، خروجی بالا نشاندهنده موفقیتآمیز بودن نصب Composer است.
اکنون برای تست نصب کامپوزر، دستور زیر را وارد کنید:
composer
Output
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.3.5 2022-04-13 16:43:00
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
--no-scripts Skips the execution of all scripts defined in composer.json file.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
در نهایت، خروجی بالا تائید میکند که Composer با موفقیت روی سرور مجازی اوبونتو نصب شده است:) و بهصورت عمومی در دسترس است.
جمعبندی
کامپوزر یک ابزار بسیار کاربردی و محبوب برای برنامهنویسان php است که بهراحتی میتوانند وابستگیهای پروژههای خود را نصب و بهروزرسانی کنند. با Composer میتوانند از کدهای آماده و تست شده دیگر توسعهدهندگان استفاده کرده و نگرانی از بابت وابستگیهای کتابخانههای استفاده شده در پروژهشان نداشته باشند. در آخر باید بگوییم که کامپوزر بهعنوان استانداردی برای مدیریت وابستگیهای پروژه در زبان پیاچپی تبدیل شده است.
نحوه نصب وردپرس با LEMP روی سرور مجازی اوبونتو Ubuntu را در مقاله زیر میتوانید مطالعه کنید.
نصب وردپرس با LEMP
سوالات متداول
کامپوزر در php چیست؟
کامپوزر یک ابزار مدیریت وابستگی (Dependency Manager) برای زبان برنامهنویسی php است که به کمک آن میتوانید پکیجهای خود را مدیریت کنید.
کامپوزر، پکیجها را در کجا قرار میدهد؟
پس از دانلود و نصب بستهها، همه آنها در فولدر vendor پروژه php شما قرار میگیرند.
چگونه میتوانم نسخههای خاصی از پکیجها را با کامپوزر نصب کنم؟
برای نصب نسخه خاصی از یک پکیج، کافی است نسخه مورد نظر را در فایل composer.json مشخص کنید یا از دستور composer require package-name:^version استفاده کنید.