Penyelesaian Masalah PHP di ServBay: Atasi Isu Biasa ImageMagick & Muat Naik Fail Besar
ServBay menyediakan persekitaran pembangunan Web tempatan yang mudah untuk pembangun, lengkap dengan sokongan pelbagai versi PHP dan modul sambungan yang meluas. Walaupun ServBay memfokuskan kestabilan dan kebolehpercayaan, pengguna kadang-kadang mungkin menemui masalah berkaitan perkhidmatan PHP atau sesetengah modul sambungannya.
Dokumen ini bertujuan membantu anda mendiagnosis serta menyelesaikan masalah lazim berkaitan PHP dalam ServBay, dengan penekanan kepada ralat sambungan ImageMagick dan isu penurunan kelajuan muat naik fail bersaiz besar menggunakan PHP. Kami juga menyediakan langkah-langkah terperinci dan penyelesaian.
Masalah Umum PHP serta Penyelesaiannya
Berikut adalah beberapa masalah biasa berkaitan PHP dan modul sambungannya serta penyelesaiannya.
Ralat ImageMagick "number of supported formats: 0"
Penerangan Masalah:
Sebahagian pengguna ServBay mungkin akan menjumpai ralat berikut semasa menggunakan sambungan PHP ImageMagick:
ImageMagick number of supported formats: 0
1
Ini biasanya menunjukkan bahawa perpustakaan ImageMagick gagal mengesan atau memuatkan format imej yang disokong.
Penyelesaian:
Kebiasaannya, masalah ini berpunca daripada perpustakaan asas yang dibekalkan oleh ServBay Runtime. Sila ikuti langkah-langkah berikut untuk menyelesaikannya:
- Buka aplikasi ServBay.
- Pada bar navigasi di kiri, pilih
Pakej
(Packages). - Di senarai pakej sebelah kanan, cari dan pilih
ServBay Runtime
. - Pastikan
ServBay Runtime
telah dipasang dan mempunyai versi1.0.20
atau1.1.20
ke atas. Jika versi anda lebih rendah, klik butang naik taraf untuk mengemaskinikannya ke versi terkini. - Setelah menaik taraf
ServBay Runtime
, sila mulakan semula perkhidmatan PHP yang anda gunakan (seperti PHP 8.1, PHP 8.2 dll).
Penjelasan Teknikal: Pakej ServBay Runtime mengandungi komponen dalaman ServBay serta perpustakaan bersama yang diperlukan oleh sesetengah sambungan PHP. Dengan menaik taraf Runtime, versi perpustakaan terkini dapat diperoleh; ini membolehkan ImageMagick memuatkan sokongan format imej secara sempurna.
Penurunan Kelajuan Ketika Muat Naik Fail Besar PHP
Penerangan Masalah:
Ada pengguna yang perasan bahawa apabila memuat naik fail bersaiz besar (melebihi 1GB) melalui aplikasi PHP (seperti perkhidmatan berdasarkan Tus-PHP, NextCloud dan sebagainya), kelajuan muat naik menjadi perlahan.
Punca utama masalah ini selalunya berkaitan dengan cara pengendalian php-fpm serta interaksi dengan mekanisme pemecahan fail (Chunked Transfer Encoding).
Penyelesaian:
Anda boleh cuba langkah-langkah berikut untuk memperbaiki kelajuan muat naik fail besar:
Naikkan nilai
pm.max_children
php-fpmDalam konfigurasi php-fpm lalai ServBay,
pm.max_children
(jumlah maksimum proses anak) ditetapkan kepada10
. Untuk muat naik fail besar atau permintaan serentak yang banyak, nilai ini boleh menjadi halangan.Anda digalakkan menaikkan nilainya mengikut keperluan. Turut semak tetapan
pm
(sepertipm = dynamic
ataupm = ondemand
) sama ada sesuai dengan beban kerja anda.Langkah:
- Di bahagian navigasi kiri ServBay, pilih versi PHP yang digunakan (misal PHP 8.2).
- Klik butang
Configuration
di sebelah kanan. - Cari serta buka fail
php-fpm.conf
. - Cari
pm.max_children
dan ubah nilai mengikut keperluan. - Simpan perubahan dan mula semula perkhidmatan PHP tersebut.
Penjelasan Teknikal: Menambah jumlah proses anak membolehkan php-fpm mengendalikan lebih banyak permintaan serentak. Untuk muat naik fail besar, setiap proses boleh digunakan dalam jangka masa lama, jadi lebih banyak proses dapat mengurangkan masa menunggu, sekaligus meningkatkan prestasi keseluruhan.
Nyahaktifkan Pemecahan Fail (di peringkat kod aplikasi, tidak disyorkan ubah ServBay)
Kaedah ini kurang disyorkan kerana ia mengubah kepada aplikasi anda dan boleh menjejaskan fungsi pemindahan berasaskan pecahan. Namun, dalam keadaan tertentu, menyesuaikan atau mematikan pemecahan fail pada kod klien atau pelayan dapat mengelakkan isu berkaitan kelajuan akibat interaksi dengan php-fpm.
Semak dan ubah parameter
fastcgi_request_buffering
Web Server (Nginx/Caddy)Jika anda menggunakan Nginx atau Caddy untuk meneruskan permintaan ke php-fpm, parameter
fastcgi_request_buffering
boleh mempengaruhi bagaimana badan permintaan dimajukan ke FPM.Nginx: Secara lalai,
fastcgi_request_buffering on;
diaktifkan — bermaksud Nginx akan menerima keseluruhan fail yang dimuat naik sebelum menghantarnya sekali gus ke php-fpm. Untuk fail besar, ini menyebabkan FPM hanya mula menerima data selepas muat naik selesai, mewujudkan kelewatan ketara. Ubah kepadafastcgi_request_buffering off;
membolehkan data dihantar kepada FPM secara terus semasa penerimaan, mempertingkatkan efisiensi muat naik.nginxlocation ~ \.php$ { # ... parameter fastcgi lain ... fastcgi_request_buffering off; # Tambah atau ubah baris ini # ... }
1
2
3
4
5Caddy: Arahannya
php_fastcgi
secara lalai bersifat aliran (sama denganfastcgi_request_buffering off
), membenarkan badan permintaan dihantar secara streaming. Jika mengalami masalah serupa, biasanya tiada perubahan diperlukan bagi konfigurasi Caddy. Namun, jika anda menggunakan arahanreverse_proxy
tersuai untuk menghantar ke FPM, pastikan tiada mekanisme buffer tambahan diaktifkan.
Langkah:
- Dalam menu kiri ServBay, pilih Web Server yang anda guna (misal Nginx atau Caddy).
- Klik butang
Configuration
pada bahagian kanan. - Cari dan buka fail konfigurasi utama (
nginx.conf
atauCaddyfile
). - Dalam blok
location
(Nginx) atauphp_fastcgi
(Caddy) untuk permintaan PHP, tambah atau ubahfastcgi_request_buffering off;
. - Simpan dan mula semula perkhidmatan Web Server berkenaan.
Pemeriksaan Lain Berkaitan:
- Periksa Konfigurasi PHP (
php.ini
): Pastikan nilai arahan sepertiupload_max_filesize
,post_max_size
danmemory_limit
cukup besar bagi saiz fail yang ingin dimuat naik. Jika tidak mencukupi, muat naik akan gagal (bukan sekadar perlahan) dan ia langkah pemeriksaan asas untuk sebarang isu muat naik. - Semak Fail Log: Tinjau log ralat dan log capaian Web Server (Nginx/Caddy), serta log ralat PHP-FPM. Log biasanya merekodkan maklumat lebih terperinci atau sebarang keanehan semasa pemprosesan permintaan, membantu penjejakan masalah. Lokasi log ralat PHP biasanya ditetapkan menerusi arahan
error_log
dalamphp.ini
.
Tips Umum Penyelesaian Masalah PHP
Jika anda berhadapan isu berkaitan PHP dalam ServBay, ikuti langkah-langkah umum berikut:
- Periksa Versi PHP & Sambungan: Pastikan versi PHP sepadan dengan keperluan aplikasi dan sambungan seperti ImageMagick, GD, MySQLi dll telah dipasang serta diaktifkan. Anda boleh cipta fail PHP dengan fungsi
phpinfo()
dan akses melalui pelayar untuk melihat maklumat konfigurasi terperinci. - Periksa Status Perkhidmatan ServBay: Sahkan perkhidmatan PHP (misal PHP 8.2), Web Server (Nginx/Caddy) dan perkhidmatan pangkalan data (MySQL, PostgreSQL dll) berfungsi normal di dalam ServBay.
- Tinjau Fail Log Ralat: Ini ialah langkah diagnosis terpenting.
- Log Ralat PHP: Semak fail log yang ditetapkan melalui arahan
error_log
dalamphp.ini
. Pastikandisplay_errors
diaktifkan (On
) dalam mod pembangunan (mod produksi lazim arifOff
), sertalog_errors
ditetapkanOn
. - Log Web Server: Semak fail log ralat (dan akses) Nginx atau Caddy. Biasanya boleh didapati dalam folder
logs
di direktori pemasangan ServBay, atau dinyatakan dalam fail konfigurasi Web Server. - Log Aplikasi ServBay: Aplikasi ServBay sendiri juga mungkin mempunyai log untuk merekodkan insiden penting atau isu semasa pelaksanaan.
- Log Ralat PHP: Semak fail log yang ditetapkan melalui arahan
- Permudahkan Persekitaran Ujian: Jika boleh, cuba hasilkan semula masalah dalam persekitaran minimal — contohnya, dengan fail PHP ringkas — untuk menyingkirkan kerumitan kod aplikasi sebenar.
- Rujuk Dokumentasi & Komuniti ServBay: Dokumentasi rasmi dan komuniti pengguna ServBay adalah sumber bantuan dan penyelesaian masalah yang bernilai.
Rumusan
Artikel ini mengupas secara khusus penyelesaian untuk ralat ImageMagick dan isu kelajuan muat naik fail besar dalam ServBay, selain menyediakan tips umum penyelesaian masalah PHP. Dengan memastikan versi ServBay Runtime terbaru, melaraskan konfigurasi php-fpm, menyesuaikan tetapan buffering di Web Server, dan menyemak fail log, kebanyakan masalah berkaitan PHP di persekitaran ServBay boleh diselesaikan. Jika isu masih berlanjutan, gunakan maklumat log untuk analisis lanjut atau mohon bantuan komuniti.