راهنمای ویرایش php.ini در داکر وردپرس: استفاده از کد مناسب برای تنظیم php.ini
می خواهیم پامتر upload_max_filesize را در php تنظیم کنیم.برای من زمانی این اتفاق افتاد که میخواستم پلاگین وردپرس را نصب کنم پیام آمدکه باید مقدار upload_max_filesize را زیاد کنید.ولی نمیدانستم چطور داکر این کار را انجام بدهم.وردپرس را با داکر وردپرس به آدرس با استفاده از فایل docker-compose.yml نصب کردم.البته با کمک بخش services در ادیتور phpstorm.
وقتی php به صورت لوکال نصب هست :
برای تنظیم پارامتر upload_max_filesize در php، ابتدا بیایید فایل php.ini را باز کنیم. این فایل معمولا در مسیر /etc/php/نسخه_php/php.ini قرار دارد. یا می توانید از دستور php --ini استفاده کنید تا مسیر فایل php.ini را ببینید.
سپس در فایل php.ini، به دنبال خطی با عنوان upload_max_filesize بگردید. اگر این خط وجود ندارد، آن را به صورت زیر اضافه کنید:upload_max_filesize = 20M
در اینجا، مقدار 20M می تواند هر مقدار دلخواهی باشد که شما می خواهید حداکثر اندازه فایلی که می تواند توسط php آپلود شود را تنظیم کنید. بعد از اعمال تغییرات، فایل php.ini را ذخیره کنید و سرویس php-fpm را restart کنید تا تغییرات اعمال شود.
حالا شما می توانید پلاگین وردپرس خود را نصب کنید و از امکانات آن بهره ببرید.
وقتی php داخل کانتینر داکر نصب هست و Dockerfile در دسترس هست :
برای ویرایش فایل php.ini در داکر وردپرس، شما باید یک فایل custom.ini با تنظیمات مورد نظرتان ایجاد کنید و آن را در دایرکتوری $PHP_INI_DIR/conf.d/ کپی کنید. این کار را میتوانید با اجرای دستورات زیر انجام دهید:
1. ابتدا یک فایل custom.ini با تنظیمات مورد نظرتان ایجاد کنید. برای مثال، برای تغییر upload_max_filesize میتوانید این فایل را ایجاد کنید و مقدار مورد نظرتان را تنظیم کنید:
```
upload_max_filesize = 20M
```
2. سپس این فایل custom.ini را در دایرکتوری $PHP_INI_DIR/conf.d/ کپی کنید. برای این کار میتوانید از دستور COPY در Dockerfile استفاده کنید. مطمئن شوید که Dockerfile شما به درستی تنظیم شده است. مثالی از Dockerfile ممکن است به صورت زیر باشد:
```
FROM wordpress:tag
COPY custom.ini $PHP_INI_DIR/conf.d/
```
3. سپس Dockerfile را build کنید تا تغییرات اعمال شود. برای این کار میتوانید از دستور docker build استفاده کنید.
- حالا باید Docker image خود را build کنید تا تغییرات اعمال شود. برای این کار میتوانید از دستور docker build استفاده کنید. به عنوان مثال:
```
docker build -t my-wordpress .
``` - در نهایت، میتوانید از Docker image جدیدی که ساختهاید برای اجرای وردپرس با تنظیمات php.ini دلخواهتان استفاده کنید.به عنوان مثال:
```docker run -d -p 80:80 my-wordpress
```
با انجام این مراحل، فایل custom.ini با تنظیمات مورد نظرتان در داکر وردپرس اعمال خواهد شد.
وقتی php داخل کانتینر داکر نصب هست و docker-compose.yml در دسترس هست :
فایل داکر کامپوز
```
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8282:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
```
برای ویرایش فایل php.ini در محیط داکر که با استفاده از Docker Compose تعریف شده است، میتوانید مراحل زیر را دنبال کنید:
1. ابتدا یک فایل custom.ini با تنظیمات مورد نظرتان ایجاد کنید. برای مثال، برای تغییر upload_max_filesize میتوانید این فایل را ایجاد کنید و مقدار مورد نظرتان را تنظیم کنید:
```
upload_max_filesize = 20M
```
2. سپس این فایل custom.ini را در محیط داکر خود mount کنید(یعنی یک فایل روی سیستم خودتون بسازید که داخل داکر در دسترس باشد). برای این کار، میتوانید از volumes در Docker Compose استفاده کنید. به Docker Compose فعلی خود اضافه کنید:
```
services:
wordpress:
...
volumes:
- ./custom.ini:/usr/local/etc/php/conf.d/custom.ini
```
فایل نهایی:
```
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8282:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
- ./custom.ini:/usr/local/etc/php/conf.d/custom.ini
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
```
3. سپس Docker Compose را restart کنید تا تغییرات اعمال شود. برای این کار میتوانید از دستور docker-compose restart استفاده کنید.
با انجام این مراحل، فایل custom.ini با تنظیمات مورد نظرتان در محیط داکر وردپرس اعمال خواهد شد. حالا میتوانید مقادیر php.ini را به دلخواه خود تغییر دهید.
اگر کار نکرد باید موارد زیر رو بررسی کنید:
اگر تغییرات در فایل php.ini اعمال نشده است، ممکن است دلایل مختلفی وجود داشته باشد. در ادامه چند مورد را بررسی کنید:
1. مطمئن شوید که فایل custom.ini با تنظیمات مورد نظرتان به درستی ایجاد شده است و محتوای صحیحی دارد.
2. بررسی کنید که فایل custom.ini به درستی در مسیر مشخص شده در Docker Compose mount شده است. در مثال قبلی، فایل custom.ini باید در مسیر /usr/local/etc/php/conf.d/custom.ini در داخل کانتینر وردپرس قرار گیرد.
3. برای اعمال تغییرات، مطمئن شوید که کانتینر وردپرس را restart کردهاید. برای این کار میتوانید از دستور docker-compose restart استفاده کنید.
4. بررسی کنید که تغییرات در فایل php.ini اعمال شدهاند یا خیر. برای این کار میتوانید به داخل کانتینر وردپرس و فایل php.ini مربوطه را بررسی کنید.
اگر با انجام این مراحل همچنان تغییرات اعمال نشده است، ممکن است مشکل در تنظیمات Docker Compose یا مسیر مونت شده برای فایل custom.ini باشد. در این صورت، باید موارد بیشتری را بررسی کنید یا از روشهای دیگر برای اعمال تنظیمات php.ini استفاده کنید.
اگر custom.ini در مسیر مشخص شده در کانتینر ایجاد نشده است:
اگر فایل custom.ini در مسیر مشخص شده در کانتینر ایجاد نشده است، ممکن است دلایل زیر باعث این مشکل شده باشد:
1. مسیر مشخص شده اشتباه است: اطمینان حاصل کنید که مسیری که برای mount کردن فایل custom.ini در Docker Compose استفاده کردهاید، صحیح است. مطمئن شوید که مسیر محلی فایل custom.ini با مسیر مقصد در کانتینر وردپرس تطابق دارد.
2. مشکل در نحوه mount کردن فایل: برای mount کردن فایل custom.ini، باید مطمئن شوید که مسیر محلی فایل در سیستم شما صحیح است و فایل custom.ini در آن مسیر وجود دارد. همچنین، باید مطمئن شوید که مسیر مقصد در کانتینر وردپرس صحیح است.
3. مشکل در دسترسی به فایل: اطمینان حاصل کنید که Docker دسترسی لازم برای خواندن فایل custom.ini را دارد. مطمئن شوید که فایل custom.ini قابل خواندن توسط Docker است.
4. خطا در Docker Compose: بررسی کنید که آیا Docker Compose به درستی تنظیم شده است و تغییرات در Docker Compose اعمال شدهاند. مطمئن شوید که فایل Docker Compose شما به درستی تنظیم شده است و تغییرات در آن اعمال شدهاند.
با بررسی این موارد، میتوانید مشکل ایجاد نشدن فایل custom.ini در مسیر مشخص شده را حل کنید.