Apakah php diperlukan untuk drupal?

Hampir 2 tahun yang lalu PHP 7. 4 mencapai akhir masa pakainya, dan dalam waktu kurang dari 2 bulan tidak akan lagi memiliki dukungan keamanan juga. Akibatnya, dalam beberapa bulan terakhir sejumlah besar klien dan penyedia merasa perlu untuk memutakhirkan server dan/atau aplikasi mereka ke PHP 8 (atau 8. 1)

Tabel berikut menunjukkan bahwa Drupal. org merekomendasikan agar aplikasi kami tetap dalam versi 9. x, saat menggunakan PHP versi 8. 0 minimal

Gambar

Apakah php diperlukan untuk drupal?

Persyaratan PHP Drupal

Kami telah memutuskan untuk mengkompilasi dalam posting ini langkah-langkah yang diperlukan untuk membuat aplikasi Drupal kami kompatibel dengan versi PHP ini, memberikan pengalaman kami bagi mereka yang mungkin membutuhkannya

Perlu diingat bahwa kita akan berfokus untuk memperbarui proyek Composer berdasarkan Metadrop Drupal boilerplate, tetapi langkah-langkah ini dapat diterapkan ke Composer berbasis Drupal lainnya. Perhatikan bahwa pengetahuan Docker dan Drupal sebelumnya diperlukan untuk memahami langkah-langkah yang lebih kompleks

Langkah langkah

1. Perbarui lingkungan lokal

Lingkungan pengembangan kami didasarkan pada Docker, jadi hal pertama yang harus Anda lakukan, yang mendasar, adalah mengubah gambar PHP agar Docker dapat menggunakan wadah PHP 8 yang sesuai

Dalam kasus kami, kami menggunakan boilerplate Metadrop dan ini pada gilirannya menggunakan gambar wodby/drupal-php. Semua tag terdaftar di Docker Hub, di mana kami harus menemukan tag yang cocok dengan versi yang akan kami miliki di lingkungan produksi kami

Sebagai contoh, kami mencari PHP versi 8. 1. 9, tag yang kita dapat dari Docker Hub adalah "8. 1-dev-4. 37. 9"
Anda perlu mengedit file

$ composer update
_6 atau file yang menentukan wadah yang Anda gunakan dalam proyek Anda

2. Ubah persyaratan platform

Langkah selanjutnya adalah memperbarui

$ composer update
_7 proyek untuk meminta PHP versi 8 di bagian persyaratan platform. Dengan menambahkannya, Anda memaksa Komposer untuk beroperasi menggunakan PHP 8. 1 sebagai platform proyek. Jika tidak, Composer akan menggunakan lingkungan versi PHP

    "config": {
        ...
        "platform": {
            "php": "8.1"
        },

Catatan. Tidak semua paket memiliki batasan PHP, sehingga beberapa paket mungkin perlu diperbarui dan diuji secara manual

3. Biarkan Komposer melakukan keajaibannya

Salah satu momen kritis telah tiba. Mari kita periksa apakah lingkungan dan komposer Anda dikonfigurasi dengan baik dan paket dapat diperoleh dengan benar

Untuk melakukan ini, luncurkan di dalam wadah

$ composer update

selama proses. Komposer akan mencoba menyelesaikan persyaratan proyek dan memperbarui paket berdasarkan itu, sehingga lingkungan harus sedekat mungkin dengan produksi

Ketergantungan langsung akan diperbarui, dan ketergantungan yang tidak dapat diperbarui karena beberapa konflik pembatasan dalam proyek Komposer akan ditampilkan. Dalam kasus ini, masalah tersebut perlu diselesaikan secara manual sesuai dengan kebutuhan masing-masing proyek

Catatan. Jika Anda tidak ingin memutakhirkan paket Komposer tetapi ingin mengetahui paket mana yang tidak kompatibel atau perlu ditingkatkan, Anda dapat menjalankan perintah dengan parameter dry-run

composer update --dry-run
_

4. Periksa apakah kode tersebut kompatibel

Untuk tinjauan kompatibilitas kode, kami telah menggunakan Kompatibilitas PHP, plugin Pelacak Kode PHP, yang menganalisis kode untuk mencari kompatibilitas antar versi. Karena ini adalah penganalisa kode statis, itu tidak sempurna karena tidak mengeksekusi kode, tetapi dapat memberi Anda lebih dari sekadar petunjuk menarik untuk menghindari kemungkinan masalah

Catatan. Cabang

$ composer update
8 diperlukan karena versi stabil saat ini (9. 3. 5) memiliki beberapa masalah yang telah diselesaikan dan digabungkan ke dalam cabang pengembangan

Pertama, tambahkan ke Composer

composer require "phpcompatibility/php-compatibility:dev-develop as 9.3.6" \
--dev
_

Selanjutnya, jalankan Code Sniffer dengan menentukan folder yang akan diperiksa

Kami merekomendasikan melakukan ini dalam modul khusus dan juga dalam modul contrib. Perhatikan bahwa sangat mungkin kesalahan yang ditunjukkan oleh Code Sniffer telah diperbaiki oleh komunitas, jadi mungkin memperbarui modul atau pustaka sudah cukup untuk memperbaikinya. Untuk meluncurkan PHP Code Sniffer dengan plugin ini, jalankan perintah berikut

./vendor/bin/phpcs -p <folder> --standard=PHPCompatibility

Jangan memperhatikan laporan file JS atau CSS, tidak akan ada masalah kompatibilitas. Jika perlu, dalam contoh yang lebih kompleks berikut ini, Anda dapat melihat cara mengabaikannya

./vendor/bin/phpcs -p web/modules/custom/ --standard=PHPCompatibility  \
 --runtime-set testVersion 8.0 --extensions=php,module,install,inc \
 --report-full=./tmp/drupal9-php8-compatibility.txt --ignore=*/tests/*
_

Menganalisis mereka sedikit parameter kita dapat melihat bahwa mereka digunakan untuk yang berikut ini

--runtime-set testVersion 8.0- : To run all the checks for PHP 8.0 and above.
--extensions=php,module,install,inc : To specific extensions files.
--report-full=<folder/file.txt> : To save the report to a file.
--ignore=*/tests/*” : To ignore specific folders.
_

5. Periksa apakah semuanya berfungsi dengan baik

Untuk proses peninjauan, kami mengikuti alur kerja di lingkungan lokal kami

  • Hapus log kesalahan untuk memulai dari awal
  • Jalankan baterai uji otomatis yang biasa Anda gunakan
  • Lakukan juga pemeriksaan manual pada titik-titik kritis
  • Terakhir, periksa log (misalnya Watchdog) untuk melihat apakah ada peringatan atau kesalahan yang diperkenalkan terkait dengan peningkatan ke PHP 8

Sangat berguna untuk memiliki laporan log yang bersih, jelas, dan terstruktur mungkin untuk menghindari bug tersembunyi yang hilang

Setelah menjalankan rangkaian pengujian (kami menggunakan Behat) dan melakukan pengujian manual, beberapa pesan tentang fungsionalitas yang tidak digunakan lagi mungkin muncul di laporan. Jika Anda mengaktifkan Watchdog, Anda dapat memeriksa kesalahan dari UI Drupal atau langsung dari database dengan kueri berikut

select count(*) count, message, variables, max(location)
from watchdog
where message like '%deprecated%'
or variables like '%deprecated%'
group by variables, message;

6. Perbarui Drush jika perlu

Drush versi 10 memiliki beberapa , jadi disarankan untuk bekerja langsung dengan versi 11

$ composer require drush/drush:^11

Setelah memperbarui Drush, saat menjalankan perintahnya, beberapa modul mungkin memicu pesan debug, ini tidak kritis, dan pesan akan muncul saat meluncurkan perintah dengan "verbose"

[debug] votingapi commands loaded even though its constraint (^9)
is incompatible with Drush 11.1.1.
Broaden the constraint in modules/contrib/votingapi/composer.json
(see 'extra\drush\services' section) to remove this message

Seperti yang tertulis di pesan, perintah berfungsi, tetapi perlu untuk menentukan di

$ composer update
7 modul kendala untuk versi 11. Anda dapat melihat masalah untuk dipecahkan dalam modul di Dukungan Drush 11

7. Periksa apakah proyek tersebut kompatibel dengan versi PHP sebelumnya

Langkah ini bersifat opsional, tetapi perlu jika server menggunakan versi sebelumnya pada saat penerapan

A. Pertama, perbaiki Komposer ke versi PHP yang diinginkan (mis. g. PHP 7. 4. 3) seperti yang Anda lakukan pada langkah 2, dan periksa statusnya dengan Drush sebagai berikut

$ composer update
0

B. Jika muncul pesan berikut, berarti ada beberapa paket yang membutuhkan PHP versi 8 (jika tidak muncul, lewati langsung ke poin D)

$ composer update
_1

Untuk mendapatkan daftar paket yang membutuhkan PHP 8, jalankan perintah berikut dan analisis di mana PHP 7 tampaknya tidak kompatibel

$ composer update
_2

C. Dalam hal ini, kami telah menginstal

composer update --dry-run
_0 di versi 6 dan membutuhkan PHP 8. 1. Kita harus melihat paket mana
composer update --dry-run
_0 bergantung pada dan menganalisis apakah salah satu dari versi yang memungkinkan kita untuk menginstal kompatibel dengan PHP 7. Mengikuti contoh, ini akan menjadi perintah dan kesimpulan

$ composer update
_3

Seperti yang Anda lihat,

composer update --dry-run
_2 telah meminta instalasi
composer update --dry-run
0 versi 5. 1 atau 6. Kita dapat melihat secara manual
$ composer update
_7 dari
composer update --dry-run
0 versi 5. 1 (versi sebelum yang telah kita instal), dan periksa apakah kompatibel dengan PHP 7. Jika kompatibel, Anda dapat menurunkan versi tanpa masalah

$ composer update
_4

Ulangi proses untuk semua paket yang menandai PHP 8 sebagai persyaratan minimum, seperti yang kami katakan di awal, selama aplikasi Anda tetap kompatibel dengan PHP 7

D. Terakhir, hapus platform dari

$ composer update
_7 (ditambahkan pada poin 2. Ubah persyaratan platform) dan jalankan

$ composer update
5

8. Penyebaran dan kesimpulan

Saatnya menyebarkan. Dalam panduan ini, kami telah menjelaskan cara memutakhirkan aplikasi Drupal kami ke PHP 8 dengan menjaga kompatibilitas mundur dengan PHP 7. Ini akan memungkinkan penggelaran ke produksi tanpa perlu menyinkronkan dengan pembaruan server ke PHP 8. Jika Anda tidak dapat atau tidak diminta untuk mempertahankan kompatibilitas mundur ini, Anda harus mempertimbangkan bahwa server harus diperbarui sebelum digunakan, jika tidak, aplikasi mungkin tidak akan berfungsi (dan Anda akan mengalami hari yang rumit)

Sebagai pernyataan akhir, panduan ini bersifat umum, jadi gunakan sebagai referensi dan sesuaikan dengan konteks proyek Anda

Versi PHP apa yang diperlukan untuk Drupal?

Sejak PHP 8. 1. 6 adalah terbaru yang mungkin belum tersedia di platform hosting, versi PHP minimum yang direkomendasikan untuk Drupal 9. 4 dan diturunkan menjadi 8. 0. PHP 8. 1. 6 atau lebih tinggi masih merupakan pilihan terbaik untuk kompatibilitas maju dengan Drupal 10, tetapi PHP 8. 0 didukung melewati Drupal 9. 4 berakhir pada bulan Juni 2022.

PHP apa yang diperlukan untuk Drupal 9?

7+ diperlukan. Jika menggunakan Drupal 9 dengan SQLite, versi 3. 26+ diperlukan. (PHP7. 4 tidak menggunakan sistem yang disediakan SQLite, jadi berhati-hatilah untuk memastikan PHP Anda dikompilasi dengan setidaknya versi ini). Jika menggunakan Drupal 9 dengan PostgreSQL, versi 10 diperlukan dengan ekstensi pg_trgm

Apa persyaratan untuk drupal 9?

Drupal 9 membutuhkan PHP 7. 3 atau lebih tinggi , dan persyaratan versi untuk Apache telah ditingkatkan menjadi Apache 2. 4. 7 atau lebih tinggi. Versi database berikut ini didukung oleh Drupal 9 core. MySQL atau Percona 5. 7.

Apa persyaratan sistem untuk instalasi Drupal?

Memori PHP. ukuran memori minimum 64MB (jika Anda menjalankan beberapa modul di situs Anda atau menggunakan alat baris perintah berbasis PHP yang intensif memori (seperti Composer . ) Perlu ekstensi PHP. PDO, XML, GD-library, OpenSSL, JSON, cURL, Mbstring.