Perl و CGI یک مفهوم واحد نیستند. Perl زبان برنامهنویسی است؛ CGI روشی استاندارد برای ارتباط وبسرور با برنامهای است که پاسخ درخواست را تولید میکند. یک برنامهٔ CGI میتواند با Perl نوشته شود، اما هر برنامهٔ Perl لزوماً CGI نیست.
Perl چه کاربردی دارد؟
Perl زبانی سطح بالا با امکانات پردازش متن، فایل و فرایندهاست. در مدیریت سیستم، پردازش گزارشها، اتصال به دیتابیس و نگهداری برنامههای وب کاربرد دارد. پرسشهای متداول رسمی Perl این کاربردها و شرایط انتخاب نسخه را توضیح میدهد.
توانایی یک زبان در انجام کاری به معنی بهترین انتخاب بودن آن برای همهٔ پروژهها نیست. تجربهٔ تیم، کتابخانههای مورد نیاز و هزینهٔ نگهداری مهماند. هنگام کار با پروژهٔ موجود، نسخهٔ مفسر و ماژولهای نصبشده را ثبت و تغییر نسخه را ابتدا آزمایش کنید.
آیا Perl ترکیبی از Perl 5 و Perl 6 است؟
خیر. زبانی که قبلاً Perl 6 نامیده میشد اکنون Raku نام دارد و مسیر توسعهٔ جداگانهای دارد. برنامهٔ Perl 5 را نمیتوان صرفاً با تغییر شمارهٔ نسخه، برنامهٔ Raku دانست. کتابخانه و محیط اجرای هر پروژه باید با همان زبان هماهنگ باشد.
نام زبان معمولاً Perl و نام برنامهٔ مفسر perl نوشته میشود. برای دیدن نسخهٔ نصبشده میتوانید perl -v را اجرا کنید؛ وجود مفسر در سرور به معنی فعال بودن اجرای وبی اسکریپتها نیست.
CGI چگونه کار میکند؟
در تعریف Apache از CGI، وبسرور درخواست را به برنامهٔ بیرونی میرساند و خروجی آن را در قالب پاسخ وب برمیگرداند. اطلاعات درخواست از راههایی مانند متغیرهای محیطی و ورودی استاندارد منتقل میشود. برنامه باید هدر مناسب و بدنهٔ پاسخ را تولید کند.
نمونهٔ سادهٔ زیر صرفاً متن ثابت برمیگرداند و ورودی کاربر را پردازش نمیکند:
#!/usr/bin/perl
use strict;
use warnings;
print "Content-Type: text/plain; charset=UTF-8\r\n\r\n";
print "CGI response is working.\n";
مسیر مفسر در خط اول باید با سرور شما مطابق باشد. فاصلهٔ خالی میان هدر و بدنه ضروری است. محل مجاز اجرای CGI، مالکیت و مجوز فایل را طبق تنظیم میزبانی انتخاب کنید؛ این قطعه بهتنهایی تنظیمات وبسرور را ایجاد نمیکند.
تفاوت Perl و CGI در انتخاب هاست
برای اجرای یک اسکریپت از خط فرمان، دسترسی به مفسر کافی است؛ برای اجرای همان منطق از وب، روش استقرار نیز لازم میشود. در cPanel، Apache Handlers ارتباط نوع فایل با پردازشگر را توضیح میدهد، اما فعال بودن CGI و امکانات حساب به پیکربندی ارائهدهنده بستگی دارد.
اگر مرورگر کد برنامه را دانلود یا نمایش میدهد، اجرای CGI درست تنظیم نشده است. در خطای 500، لاگ سرور، مسیر مفسر، پایان خط فایل، مجوز اجرا و قالب هدر را بررسی کنید. عمومی کردن مجوز نوشتن با chmod 777 راهحل این خطا نیست.
امنیت و کارایی CGI
اجرای سمت سرور خودبهخود برنامه را امن نمیکند. ورودی فرم و URL را پیش از استفاده اعتبارسنجی کنید، دادهٔ کاربر را به فرمان shell نچسبانید و اطلاعات اتصال دیتابیس را در مسیر عمومی نگه ندارید. حساب اجرا باید فقط مجوزهای لازم را داشته باشد.
راهنمای امنیت Perl سازوکار taint و محدودیتهای آن را توضیح میدهد؛ این ابزار جای طراحی درست ورودی و خروجی را نمیگیرد. CGI سنتی نیز برای هر درخواست هزینهٔ اجرای برنامه دارد. برای سرویس پرترافیک، معماری و روش اجرای برنامه را با اندازهگیری انتخاب کنید و ادعای «همیشه سبکترین و سریعترین» را مبنا نگذارید.
مطالعهٔ مرتبط
بازبینی فنی: ۱۳ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شدهاند.