
پلتفرم PHP
(PHP Platform)🎯 توضیحات و نکات تکمیلی
فهرست عناوین:
- استقرار برنامههای PHP
- انتخاب نسخهی PHP
- تنظیم منطقهی زمانی (TimeZone)
- تنظیمات اختصاصی php.ini
- تنظیمات اختصاصی htaccess
- کار با Queue ها
- تنظیم هدرهای امنیتی HTTP
- رفع خطای CORS
- لیست اکستنشنهای نصب شده
استقرار برنامههای PHP
توجه داشته باشید که لازم است در ریشهی برنامهیتان حداقل یک فایل با نامindex.phpداشته باشید. در غیر این صورت دستور liara deploy نمیتواند پلتفرم برنامهیتان را تشخیص دهد و لازم خواهد بود با استفاده از پارامتر--platform=phpپلتفرمتان را مشخص کنید.
انتخاب نسخهی PHP
بهصورت پیشفرض، برنامهی شما با استفاده از PHP 8.0 اجرا میشود. در صورتی که قصد دارید نسخه دیگری را برای اجرای برنامهیتان استفاده کنید میتوانید در فایل liara.json بخش زیر را اضافه کنید: (فایل زیر برای یک برنامه تستی در نظر گرفته شده است.)
{
"php": {
"version": "8.2"
}
}
در حال حاضر، از نسخههای زیر پشتیبانی میشود:
- 7.2
- 7.3
- 7.4
- 8.0 (پیشفرض)
- 8.1
- 8.2
تنظیم منطقهی زمانی (TimeZone)
به صورت پیشفرض، منطقهی زمانی بر روی Asia/Tehran تنظیم شده است. برای تغییر مقدار پیشفرض، میتوانید از پارامترtimezoneدر فایل liara.json استفاده کنید. برای نمونه:
{
"php": {
"timezone": "America/Los_Angeles"
}
}
تنظیمات اختصاصی php.ini
از طریق ایجاد یک فایل با نامliara_php.iniداخل ریشهی برنامهیتان میتوانید تنظیمات PHP را شخصیسازی کنید. برای مثال، ممکن است بخواهید که حداکثر حجم مجاز برای آپلود فایل در سایتتان را شخصیسازی کنید. پس لازم است که فایلliara_php.iniرا به برنامهیتان اضافه کرده و محتویات آن را برابر تکهکد قرار دهید:
file_uploads = On
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 600
بعد از اضافه کردن این فایل، در استقرار بعدی برنامه شما با این تنظیمات شروع به کار خواهد کرد.
تنظیمات اختصاصی htaccess
از آنجایی که در لیارا برنامههای PHP به وسیله Apache اجرا میشوند، شما میتوانید تنظیمات دلخواه وبسروری خود را در فایلهای .htaccess قرار دهید. برای نمونه فرض کنید میخواهید از انتهای همه URL ها php. را حذف کنید. کافیست یک فایل htaccess. به ریشه برنامهیتان اضافه کنید و سپس مقادیر زیر را در آن قرار دهید. بعد از اضافه کردن میتوانید لینکی مثل https://liara.ir/about.php را به صورت https://liara.ir/about مشاهده کنید.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
</IfModule>
شما میتوانید هر تنظیمی که از قبل در htaccess. برنامهیتان داشتید را به لیارا نیز منتقل کنید.
کار با Queue ها
Supervisor در پلتفرم PHP لیارا نصب شده و شما با ایجاد یک فایل به نام supervisor.conf در ریشهی برنامه، میتوانید تنظیمات صفهای مختلفتان را در آن وارد کنید. در نهایت با یکبار دیپلویکردن، صفهای شما شروع به کار خواهند کرد.
Supervisor برنامهی بسیار مفیدی است که سعی میکند صفهای شما را همیشه در حال اجرا نگهدارد. اگر به هر دلیلی صفهایتان به خطا بخورند و خاموش شوند، Supervisor آنها را دوباره ایجاد و فعال میکند.
از بخش خط فرمان (کنسول) برنامهیتان هم میتوانید با supervisorctl کار کنید و وضعیت صفهایتان را مشاهده کنید.
$ supervisorctl status
یک نمونه کانفیگ ساده برای تعریف صف:
[program:php-worker]
process_name=%(program_name)s_%(process_num)02d
command=cd $ROOT && php queues.php
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/tmp/php-worker.log
برای کسب اطلاعات بیشتر میتوانید به لینک زیر مراجعه کنید:
تنظیم هدرهای امنیتی HTTP
برای جلوگیری از حملاتی مانند Clickjacking، XSS، SSL Striping میتوانید هدرهای امنیتی را مانند مثال زیر در فایل .htaccessتنظیم کرده و نحوهی برقراری ارتباط با سایت را برای مرورگرها تعیین کنید:
<IfModule mod_headers.c>
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</IfModule>
رفع خطای CORS
درصورتی که در برنامهی PHP با خطای CORS مواجه شدهاید، توصیه میشود قطعه کد زیر را به تنظیمات اختصاصی htaccess پروژهی خود اضافه کنید.
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
برای کسب اطلاعات بیشتر مستندات CORS را مطالعه کنید.
لیست اکستنشنهای نصب شده
در پلتفرم PHP اکستنشنهای PHP زیر نصب شدهاند:
[PHP Modules]
amqp
apcu
ast
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
ds
enchant
ev
exif
fileinfo
filter
ftp
gd
gettext
gmp
gnupg
grpc
hash
iconv
igbinary
imagick
imap
intl
json
ldap
libxml
mailparse
mbstring
mcrypt
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcov
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
pspell
rdkafka
readline
redis
Reflection
session
shmop
SimpleXML
snmp
soap
sockets
sodium
SourceGuardian
SPL
sqlite3
standard
swoole
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
uploadprogress
uuid
xml
xmlreader
xmlrpc
xmlwriter
xsl
yaml
Zend OPcache
zip
zlib
[Zend Modules]
SourceGuardian
Zend OPcache