ค้นหาเว็บไซต์

ติดตั้ง PHP 8.1 และตั้งค่าสภาพแวดล้อมการพัฒนาท้องถิ่นบน Ubuntu


เวอร์ชันก่อนหน้าของบทช่วยสอนนี้เขียนโดย alenaholligan.

บทนำ

PHP เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์แบบโอเพ่นซอร์สที่ได้รับความนิยม ถูกออกแบบมาสำหรับการพัฒนาเว็บไซต์ และมีบทบาทสำคัญในการขับเคลื่อนอินเทอร์เน็ต ตั้งแต่บล็อกและเว็บไซต์อีคอมเมิร์ซไปจนถึงแอปพลิเคชันขนาดใหญ่ ในแต่ละการอัปเดตใหม่ PHP มักมาพร้อมกับประสิทธิภาพที่ดีขึ้น ความปลอดภัยที่เพิ่มขึ้น และฟีเจอร์การพัฒนาแบบทันสมัย เพื่อช่วยให้นักพัฒนาสามารถสร้างซอฟต์แวร์ที่แข็งแรงและสามารถขยายตัวได้

PHP 8.1 เป็นเวอร์ชันที่เสถียรและมีการสนับสนุนระยะยาว ซึ่งมาพร้อมกับการปรับปรุงที่สำคัญและคุณสมบัติใหม่ของภาษา ในขณะเดียวกันยังคงความน่าเชื่อถือ การติดตั้ง PHP 8.1 บน Ubuntu จะช่วยให้สภาพแวดล้อมการพัฒนาท้องถิ่นของคุณเป็นปัจจุบัน ปลอดภัย และเข้ากันได้กับเฟรมเวิร์กและแพลตฟอร์มที่ใช้อย่างแพร่หลาย เช่น WordPress, Laravel และแอปพลิเคชัน PHP แบบกำหนดเอง

บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับการติดตั้ง PHP 8.1 บน Ubuntu การกำหนดค่าให้ทำงานกับ Apache หรือ Nginx การตั้งค่าขยาย PHP ที่จำเป็น และการติดตั้ง Composer สำหรับการจัดการ dependencies คุณยังจะได้เรียนรู้วิธีตรวจสอบการติดตั้งของคุณและแก้ไขปัญหาที่พบบ่อย

ปรับใช้แอปพลิเคชัน PHP ของคุณจาก GitHub โดยใช้แพลตฟอร์มแอปของ Linux-Console.net ให้ Linux-Console.net ดูแลการปรับขนาดแอปของคุณ

ประเด็นสำคัญ

  • การติดตั้ง PHP 8.1 บน Ubuntu 22.04: Ubuntu 22.04 LTS มี PHP 8.1 อยู่ในรีโพซิทอรีเริ่มต้น ทำให้คุณสามารถติดตั้ง PHP รุ่นที่เสถียรและได้รับการสนับสนุนระยะยาวได้โดยใช้ apt โดยไม่ต้องใช้ PPA ของบุคคลที่สาม ซึ่งช่วยให้มั่นใจได้ถึงการอัปเดตที่คาดเดาได้ แพตช์ความปลอดภัย และความเข้ากันได้กับเฟรมเวิร์ก PHP สมัยใหม่

  • ส่วนขยาย PHP ที่จำเป็นสำหรับโปรเจกต์จริง: แอปพลิเคชัน PHP ที่ใช้ในสภาพแวดล้อมการผลิตส่วนใหญ่มักพึ่งพาส่วนขยาย เช่น mysql, curl, xml, mbstring, zip, gd และ bcmath การติดตั้งเหล่านี้ตั้งแต่เนิ่นๆ จะช่วยป้องกันข้อผิดพลาดระหว่างรันไทม์ในภายหลังและยังมั่นใจได้ว่าทำงานร่วมกับเฟรมเวิร์กอย่าง Laravel, Symfony และ WordPress ได้อย่างราบรื่น

  • การเลือก Apache หรือ Nginx สำหรับการพัฒนา PHP: Apache สามารถรัน PHP ได้โดยตรงโดยใช้ mod_php ในขณะที่ Nginx จำเป็นต้องใช้ PHP‑FPM สำหรับการจัดการคำขอ วิธีทั้งสองนี้เหมาะกับการพัฒนาในเครื่อง แต่ PHP‑FPM จะมีความใกล้เคียงกับสภาพแวดล้อมโปรดักชันสมัยใหม่มากกว่าและสามารถรองรับโหลดได้ดีกว่า

  • Composer ในฐานะรากฐานของเวิร์กโฟลว์ PHP สมัยใหม่: Composer จัดการ dependencies ของโปรเจกต์ผ่าน composer.json และ composer.lock เพื่อให้มั่นใจว่า build มีความสม่ำเสมอในทุกเครื่อง เป็นเครื่องมือสำคัญสำหรับการติดตั้ง frameworks การสร้าง autoloaders และการรักษาเวอร์ชัน dependencies ที่เชื่อถือได้ในโปรเจกต์ PHP ที่ทำงานร่วมกัน

  • การกำหนดค่า PHP สำหรับการพัฒนาโดยเฉพาะ: สภาพแวดล้อมการพัฒนาจะได้รับประโยชน์จากการรายงานข้อผิดพลาดอย่างละเอียด การตั้งค่าหน่วยความจำสูงขึ้น และเวลาการทำงานที่ยาวนานขึ้น การปรับการตั้งค่าเหล่านี้ใน php.ini ช่วยให้พบข้อบกพร่องได้อย่างรวดเร็วในระหว่างการพัฒนา แต่ต้องกลับไปตั้งค่าเดิมสำหรับการใช้งานจริงเสมอ

  • การแก้ไขปัญหาและการตรวจสอบเป็นส่วนหนึ่งของการติดตั้ง: การยืนยัน PHP ด้วย php -v การตรวจสอบส่วนขยายที่โหลด และการตรวจสอบบันทึกของ Apache, Nginx หรือ PHP‑FPM เป็นขั้นตอนสำคัญ ปัญหาส่วนใหญ่ในการติดตั้งเกิดจากการขาดส่วนขยาย สิทธิ์ไม่เพียงพอ หรือการตั้งค่าเว็บเซิร์ฟเวอร์ผิดพลาด

คุณสมบัติพื้นฐาน

ในการทำแบบฝึกหัดนี้ให้เสร็จ คุณต้องมี:

  • เครื่องคอมพิวเตอร์ท้องถิ่นหรือเซิร์ฟเวอร์เสมือนที่รัน Ubuntu (รองรับ Ubuntu 22.04 LTS และเวอร์ชันที่ใหม่กว่า)
  • การเข้าถึงเครื่องด้วยสิทธิ์ผู้ดูแลระบบ (sudo)
  • การเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้
  • ความคุ้นเคยเบื้องต้นกับบรรทัดคำสั่ง

หากคุณกำลังตั้งค่าเซิร์ฟเวอร์ Ubuntu ใหม่ โปรดดูคู่มือของเราเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์เริ่มต้นด้วย Ubuntu

ขั้นตอนที่ 1 — การติดตั้ง PHP 8.1

คุณจะทำการติดตั้งและตั้งค่าผ่านบรรทัดคำสั่ง ซึ่งเป็นวิธีการโต้ตอบกับคอมพิวเตอร์แบบไม่ใช้กราฟิก กล่าวคือ แทนที่จะคลิกปุ่มต่าง ๆ คุณจะพิมพ์ข้อความและรับการตอบกลับจากคอมพิวเตอร์ผ่านข้อความเช่นกัน

บรรทัดคำสั่งหรือที่เรียกว่าช็อตเชลล์หรือเทอร์มินัล สามารถช่วยคุณแก้ไขและทำให้งานหลายอย่างที่คุณทำบนคอมพิวเตอร์ทุกวันเป็นอัตโนมัติ และเป็นเครื่องมือสำคัญสำหรับนักพัฒนาซอฟต์แวร์ มีคำสั่งเทอร์มินัลมากมายให้เรียนรู้ ซึ่งจะช่วยให้คุณสามารถทำสิ่งต่างๆ ได้อย่างทรงพลังมากขึ้น บทความ 'การแนะนำเทอร์มินัลของลินุกซ์' สามารถช่วยให้คุณเข้าใจเทอร์มินัลได้ดีขึ้น

หมายเหตุ: หากคุณเป็นผู้ใช้ Ubuntu ใหม่ ควรพิจารณาอ่านเอกสาร Ubuntu ของเราเพื่อคำแนะนำเพิ่มเติมเกี่ยวกับการจัดการระบบ

บน Ubuntu คุณสามารถหาแอปพลิเคชันเทอร์มินัลได้โดยคลิกที่ไอคอน Ubuntu ที่มุมบนซ้ายของหน้าจอแล้วพิมพ์ terminal ลงในแถบการค้นหา คลิกที่ไอคอนแอปพลิเคชันเทอร์มินัลเพื่อเปิดมัน หรือคุณสามารถกดปุ่ม CTRL, ALT และ T พร้อมกันบนแป้นพิมพ์เพื่อเปิดแอปพลิเคชันเทอร์มินัลโดยอัตโนมัติ

หมายเหตุ: บน Ubuntu 22.04 LTS, PHP 8.1 มีให้ใช้งานในที่เก็บค่าเริ่มต้น เมื่อคุณติดตั้ง PHP โดยไม่ระบุเวอร์ชันบน Ubuntu 22.04 ระบบจะติดตั้ง PHP 8.1 เป็นค่าเริ่มต้น

ถ้าคุณต้องการจัดการหลายเวอร์ชันของ PHP หรือจะติดตั้งเวอร์ชันอื่น ลองใช้ phpenv หรือ phpbrew สำหรับการจัดการเวอร์ชันดู

เรียกใช้คำสั่งต่อไปนี้เพื่ออัปเดตรายการแพ็กเกจที่มีอยู่ของคุณ จากนั้นติดตั้ง PHP 8.1:

sudo apt update
sudo apt install --no-install-recommends php8.1

แฟล็ก --no-install-recommends จะทำให้มั่นใจได้ว่าซอฟต์แวร์อื่น ๆ เช่น เว็บเซิร์ฟเวอร์ Apache จะไม่ถูกติดตั้ง

ตรวจสอบข้อมูลเวอร์ชัน PHP ของคุณด้วยคำสั่งต่อไปนี้:

php -v

คุณจะได้รับผลลัพธ์แบบนี้:

PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies

การตั้งค่านี้ถูกทดสอบบน Ubuntu 22.04 LTS โดยใช้แพ็กเกจ PHP 8.1 จากที่เก็บอย่างเป็นทางการของ Ubuntu

ติดตั้งส่วนขยาย PHP ที่จำเป็นสำหรับการพัฒนาเว็บ:

sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath

คำสั่งนี้จะติดตั้งโมดูลต่อไปนี้:

  • php8.1-cli - ตัวอินเทอร์พรีเตอร์คำสั่ง ใช้สำหรับทดสอบสคริปต์ PHP จากเชลล์หรือทำงานสคริปต์เชลล์ทั่วไป
  • php8.1-common - เอกสาร ตัวอย่าง และโมดูลทั่วไปสำหรับ PHP
  • php8.1-mysql - สำหรับการทำงานกับฐานข้อมูล MySQL
  • php8.1-zip - ใช้สำหรับการทำงานกับไฟล์บีบอัด
  • php8.1-gd - สำหรับการทำงานกับภาพ
  • php8.1-mbstring - ใช้จัดการสตริงที่ไม่ใช่ ASCII
  • php8.1-curl - ช่วยให้คุณสามารถส่งคำขอ HTTP ใน PHP ได้
  • php8.1-xml - ใช้สำหรับการทำงานกับข้อมูล XML
  • php8.1-bcmath - ใช้เมื่อทำงานกับเลขทศนิยมที่ต้องการความแม่นยำ

ไฟล์การตั้งค่า PHP จะถูกเก็บไว้ที่ /etc/php/8.1/ ไฟล์การตั้งค่าหลักคือ php.ini ซึ่งอาจอยู่ในไดเรกทอรีที่แตกต่างกันขึ้นอยู่กับการตั้งค่าของคุณ:

  • การตั้งค่า CLI: /etc/php/8.1/cli/php.ini
  • การกำหนดค่า Apache: /etc/php/8.1/apache2/php.ini (ถ้า Apache ถูกติดตั้งแล้ว)
  • การตั้งค่า PHP-FPM: /etc/php/8.1/fpm/php.ini (ถ้าได้ติดตั้ง PHP-FPM ไว้)

ตรวจสอบส่วนขยายที่ติดตั้งแล้ว:

php -m

นี่คือรายการโมดูล PHP ทั้งหมดที่ถูกโหลด หาก php -v แสดงเวอร์ชันที่ต่างจากที่คาดไว้ อาจเป็นไปได้ว่าคุณมีการติดตั้ง PHP หลายเวอร์ชัน ใช้ php8.1 -v เพื่อตรวจสอบ PHP 8.1 โดยเฉพาะ

คุณได้ติดตั้ง PHP และตรวจสอบเวอร์ชันที่กำลังใช้งานแล้ว คุณยังได้ติดตั้งโมดูล PHP ที่จำเป็นทั้งหมดและสามารถแสดงรายชื่อโมดูลที่คุณได้โหลดแล้ว

ขั้นตอนที่ 2 — การตั้งค่า PHP กับ Apache

ติดตั้งโมดูล Apache PHP:

sudo apt install libapache2-mod-php8.1

เปิดใช้งานโมดูลแล้วรีสตาร์ท Apache:

sudo a2enmod php8.1
sudo systemctl restart apache2

การเข้าใจ mod_php: โมดูล mod_php จะฝัง PHP ไว้โดยตรงในกระบวนการของ Apache เมื่อ Apache รับคำขอสำหรับไฟล์ PHP มันจะประมวลผลไฟล์นั้นภายในโดยใช้ตัวแปล PHP ที่ฝังอยู่ สิ่งนี้แตกต่างจาก Nginx ซึ่งจำเป็นต้องใช้บริการ PHP-FPM แยกต่างหาก คำสั่ง a2enmod จะสร้างลิงก์สัญลักษณ์ใน /etc/apache2/mods-enabled/ เพื่อเปิดใช้งานโมดูล

ตรวจสอบว่า Apache กำลังประมวลผล PHP อย่างถูกต้องโดยการสร้างไฟล์ทดสอบในโฟลเดอร์รากของเอกสารของ Apache (มักอยู่ที่ /var/www/html):

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

ไปที่ http://localhost/info.php ในเว็บเบราว์เซอร์ของคุณ คุณจะเห็นหน้าข้อมูลการตั้งค่า PHP ลบไฟล์นี้หลังการทดสอบเพื่อความปลอดภัย:

sudo rm /var/www/html/info.php

การแก้ไขปัญหา Apache PHP

ถ้า Apache ไม่สามารถเริ่มทำงานหลังจากติดตั้ง mod_php:

ตรวจสอบล็อกข้อผิดพลาดของ Apache:

sudo tail -20 /var/log/apache2/error.log

ปัญหาที่พบบ่อยได้แก่:

  • โมดูล PHP ที่ขัดแย้ง: หากคุณมีหลายเวอร์ชันของ PHP ให้ปิดใช้งานโมดูล PHP อื่น ๆ ก่อนโดยใช้ sudo a2dismod php7.4 (ถ้ามี)
  • ข้อผิดพลาดของไวยากรณ์ในไฟล์กำหนดค่า Apache: ใช้คำสั่ง sudo apache2ctl configtest เพื่อตรวจสอบ

หากคุณเยี่ยมชม localhost และเห็น “It works!” แต่ไฟล์ PHP แสดงเป็นข้อความธรรมดา:

นี่หมายความว่า Apache ไม่ได้ประมวลผล PHP ตรวจสอบ:

  1. ตรวจสอบว่าโมดูลถูกเปิดใช้งานแล้ว:
apache2ctl -M | grep php
  1. หากไม่มีอะไรปรากฏ แสดงว่ามอดูลไม่ได้ถูกโหลด ให้เปิดใช้งานอีกครั้ง:
sudo a2enmod php8.1
sudo systemctl restart apache2
  1. ตรวจสอบว่าไฟล์ PHP ของคุณมีนามสกุลที่ถูกต้อง (.php) และมีโค้ด PHP อยู่

หากคุณได้รับข้อผิดพลาด 403 Forbidden:

ตรวจสอบสิทธิ์ของไฟล์:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

หมายเหตุด้านความปลอดภัย: ฟังก์ชัน phpinfo() เปิดเผยข้อมูลระบบอย่างละเอียด อย่าทิ้งไฟล์ที่มี phpinfo() ไว้บนเซิร์ฟเวอร์ที่ใช้งานจริง

การกำหนดค่าโฮสต์เสมือนของ Apache

สำหรับการพัฒนาท้องถิ่นด้วยโดเมนที่กำหนดเอง ให้สร้างโฮสต์เสมือน:

sudo nano /etc/apache2/sites-available/example.local.conf

เพิ่มการตั้งค่านี้:

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot /var/www/example.local
    <Directory /var/www/example.local>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • ServerName: ชื่อโดเมนสำหรับโฮสต์เสมือนนี้
  • DocumentRoot: ที่ที่เก็บไฟล์ PHP ของคุณ
  • AllowOverride All: อนุญาตให้ไฟล์ .htaccess สามารถเขียนทับการตั้งค่า Apache ได้ (จำเป็นสำหรับเฟรมเวิร์กอย่าง Laravel)
  • Require all granted: อนุญาตให้เข้าถึงไดเรกทอรี

สร้างไดเรกทอรี เปิดใช้งานไซต์ และรีสตาร์ท Apache:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2

เพิ่มโดเมนไปที่ไฟล์ /etc/hosts ของคุณเพื่อเข้าถึงแบบท้องถิ่น:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

การเลือกใช้ระหว่าง Apache และ Nginx

ก่อนที่คุณจะกำหนดค่าการทำงานของเว็บเซิร์ฟเวอร์ ให้พิจารณาว่าอันไหนเหมาะกับความต้องการของคุณ:

คุณสมบัติApache กับ mod_phpNginx กับ PHP-FPM
การประมวลผล PHPฝังในกระบวนการของ Apacheบริการ PHP-FPM แยกต่างหาก
การใช้งานหน่วยความจำสูงกว่า (PHP ในแต่ละกระบวนการ Apache)ต่ำกว่า (แยกกลุ่มกระบวนการ)
ประสิทธิภาพเหมาะสำหรับการจราจรน้อยถึงปานกลางเหมาะสำหรับการใช้งานที่มีการเข้าชมสูงและคำขอพร้อมกัน
การตั้งค่าการตั้งค่าเริ่มต้นที่ง่ายขึ้นซับซ้อนมากขึ้น (ต้องการการตั้งค่า PHP-FPM)
การสนับสนุน .htaccessสนับสนุนในตัวไม่รองรับ (ต้องกำหนดค่าในบล็อกเซิร์ฟเวอร์)
การใช้งานในการผลิตพบได้ทั่วไปในการโฮสต์แบบแชร์พบได้ทั่วไปในการใช้งานสมัยใหม่
เส้นกราฟการเรียนรู้ง่ายขึ้นสำหรับผู้เริ่มต้นเส้นโค้งการเรียนรู้ที่ชัน
ประสิทธิภาพในการใช้ทรัพยากรประสิทธิภาพต่ำลงเมื่อมีโหลดสูงมีประสิทธิภาพมากขึ้นเมื่อมีโหลดสูง

เมื่อใดควรเลือกใช้ Apache:

  • คุณคุ้นเคยกับ Apache หรือจำเป็นต้องใช้การสนับสนุน .htaccess
  • การตั้งค่าสภาพแวดล้อมการพัฒนาแบบง่าย
  • การทำงานกับเฟรมเวิร์กที่พึ่งพา .htaccess มาก (การตั้งค่า WordPress บางแบบ)
  • คุณชอบการตั้งค่าเริ่มต้นที่ง่ายกว่า

เมื่อใดควรเลือกใช้ Nginx:

  • คุณต้องการประสิทธิภาพที่ดีกว่าเมื่อมีการใช้งานสูง
  • คุณต้องการสะท้อนสภาพแวดล้อมการผลิตสมัยใหม่
  • คุณกำลังสร้างแอปพลิเคชันที่สามารถขยายได้
  • คุณชอบสถาปัตยกรรมที่ทันสมัยมากกว่า

ทั้งสองวิธีใช้งานได้ดีเท่าๆ กันสำหรับการพัฒนาท้องถิ่น การเลือกมักขึ้นอยู่กับความชอบส่วนตัวหรือโครงสร้างพื้นฐานที่มีอยู่แล้ว

ขั้นตอนที่ 3 — การตั้งค่า PHP กับ Nginx

ติดตั้ง PHP-FPM (ตัวจัดการกระบวนการ FastCGI):

sudo apt install php8.1-fpm

เริ่มและเปิดใช้งาน PHP-FPM:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

ทำความเข้าใจเกี่ยวกับ PHP-FPM และ FastCGI: แตกต่างจาก mod_php ของ Apache, Nginx ไม่ได้ประมวลผล PHP โดยตรง PHP-FPM (FastCGI Process Manager) ทำงานเป็นบริการแยกที่ Nginx สื่อสารด้วยผ่านโปรโตคอล FastCGI FastCGI เป็นโปรโตคอลแบบไบนารีสำหรับเชื่อมโปรแกรมกับเว็บเซิร์ฟเวอร์—มันเร็วกว่าการใช้ CGI แบบดั้งเดิมเพราะมันคงกระบวนการให้อยู่ระหว่างคำขอ.

เมื่อ Nginx ได้รับคำขอสำหรับไฟล์ PHP มันจะส่งคำขอนั้นไปยัง PHP-FPM ผ่าน Unix socket (หรือการเชื่อมต่อ TCP) PHP-FPM จะประมวลผลโค้ด PHP และส่งผลลัพธ์กลับไปยัง Nginx ซึ่งจากนั้น Nginx จะส่งต่อไปยังลูกค้า การแยกส่วนนี้ช่วยให้ PHP-FPM สามารถจัดการกลุ่มกระบวนการของตัวเองได้ เพิ่มประสิทธิภาพและการจัดการทรัพยากรให้ดีขึ้น

การกำหนดค่าเซิร์ฟเวอร์บล็อก Nginx

สร้างการกำหนดค่าเซิร์ฟเวอร์บล็อก:

sudo nano /etc/nginx/sites-available/example.local

เพิ่มการตั้งค่านี้:

server {
    listen 80;
    server_name example.local;
    root /var/www/example.local;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

คำอธิบายการตั้งค่า:

  • root: ไดเรกทอรีที่เก็บไฟล์ PHP ของคุณ
  • location ~ \.php$: จับคู่คำขอทั้งหมดที่ลงท้ายด้วย .php โดยใช้ regex
  • include snippets/fastcgi-php.conf: รวมการตั้งค่า FastCGI เริ่มต้นของ Nginx (กำหนด SCRIPT_FILENAME และตัวแปรที่จำเป็นอื่น ๆ)
  • fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: ซ็อกเก็ต Unix ที่ PHP-FPM ใช้ฟังการเชื่อมต่อ นี่คือวิธีที่ Nginx สื่อสารกับ PHP-FPM เส้นทางของซ็อกเก็ตถูกกำหนดไว้ใน /etc/php/8.1/fpm/pool.d/www.conf

เปิดใช้งานเว็บไซต์และทดสอบการตั้งค่า:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -t

หากการทดสอบผ่าน ให้รีสตาร์ท Nginx:

sudo systemctl restart nginx

เพิ่มโดเมนไปที่ /etc/hosts:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

สร้างไฟล์ PHP สำหรับทดสอบ:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.php

ไปที่ http://example.local/info.php คุณควรเห็นหน้าการตั้งค่าของ PHP ลบไฟล์ทดสอบหลังจากตรวจสอบแล้ว:

sudo rm /var/www/example.local/info.php

การแก้ไขปัญหา Nginx และ PHP

หากคุณพบข้อผิดพลาด “502 Bad Gateway”:

ซึ่งหมายความว่า Nginx ไม่สามารถสื่อสารกับ PHP-FPM ได้ ตรวจสอบ:

  1. ตรวจสอบว่า PHP-FPM กำลังทำงานอยู่:
sudo systemctl status php8.1-fpm
  1. ตรวจสอบว่าเส้นทางของซ็อกเก็ตถูกต้องหรือไม่ ตำแหน่งของซ็อกเก็ตถูกกำหนดไว้ใน /etc/php/8.1/fpm/pool.d/www.conf:
grep listen /etc/php/8.1/fpm/pool.d/www.conf

คุณควรจะเห็นบางอย่างเช่น listen=/run/php/php8.1-fpm.sock เส้นทางในไฟล์คอนฟิกของ Nginx ต้องตรงกันอย่างแม่นยำ โปรดทราบว่า /var/run มักจะเป็นลิงก์สัญลักษณ์ไปยัง /run ดังนั้นทั้งสองเส้นทางสามารถใช้งานได้

  1. ตรวจสอบสิทธิ์ไฟล์ซ็อกเก็ต:
ls -la /var/run/php/php8.1-fpm.sock

ซ็อกเก็ตควรเป็นของ www-data หรือผู้ใช้ที่ Nginx ใช้งาน หากสิทธิ์ไม่ถูกต้อง:

sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock
  1. ตรวจสอบบันทึกข้อผิดพลาดของ Nginx:
sudo tail -20 /var/log/nginx/error.log

คุณอาจเห็นข้อผิดพลาดเช่น:

connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)

นี้บ่งชี้ว่าเส้นทางซ็อกเก็ตไม่ถูกต้องหรือ PHP-FPM ไม่ทำงาน

หากไฟล์ PHP ถูกดาวน์โหลดแทนที่จะรัน:

สิ่งนี้หมายความว่า Nginx ไม่ได้ส่งไฟล์ PHP ไปยัง PHP-FPM ตรวจสอบ:

  • บล็อกตําแหน่งที่ตั้ง ~ \.php$ มีอยู่ในการกําหนดค่าเซิร์ฟเวอร์ของคุณ
  • คำสั่ง fastcgi_pass ชี้ไปยังซ็อกเก็ตที่ถูกต้อง
  • คุณได้รีสตาร์ท Nginx หลังจากทำการเปลี่ยนแปลงแล้ว

หากคุณพบข้อผิดพลาด “ไม่พบไฟล์”:

ตรวจสอบว่า snippets/fastcgi-php.conf มีอยู่หรือไม่:

ls -la /etc/nginx/snippets/fastcgi-php.conf

ไฟล์นี้กำหนดค่า SCRIPT_FILENAME ซึ่งบอก PHP-FPM ว่าควรเรียกใช้ไฟล์ใด หากไม่มีไฟล์นี้ PHP-FPM จะไม่รู้ว่าจะประมวลผลไฟล์ไหน

ขั้นตอนที่ 4 — การตั้งค่า PHP สำหรับการพัฒนา

กำหนดค่า PHP สำหรับการพัฒนาโดยปรับการรายงานข้อผิดพลาด การตั้งค่าการแสดงผล และข้อจำกัดของหน่วยความจำใน php.ini การตั้งค่าเหล่านี้แตกต่างจากการตั้งค่าสำหรับการใช้งานจริง

PHP ใช้ไฟล์การกำหนดค่าที่แยกจากกันสำหรับการใช้งาน CLI (command-line) และเซิร์ฟเวอร์เว็บ แก้ไขไฟล์ที่เหมาะสม:

สำหรับ CLI (เมื่อรัน PHP จากเทอร์มินัล):

sudo nano /etc/php/8.1/cli/php.ini

สำหรับเว็บเซิร์ฟเวอร์ (Apache หรือ Nginx พร้อม PHP-FPM):

# For Apache
sudo nano /etc/php/8.1/apache2/php.ini

# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.ini

หมายเหตุ: หากคุณใช้ทั้ง CLI และเว็บเซิร์ฟเวอร์ คุณจำเป็นต้องกำหนดค่าทั้งสองไฟล์แยกกัน การเปลี่ยนแปลงใน cli/php.ini จะไม่ส่งผลต่อคำขอเว็บ และการเปลี่ยนแปลงใน apache2/php.ini หรือ fpm/php.ini จะไม่ส่งผลต่อสคริปต์ CLI

การตั้งค่าการพัฒนาที่สำคัญ

ค้นหาและปรับปรุงการตั้งค่าเหล่านี้ในไฟล์ php.ini ของคุณ:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_York

แต่ละการตั้งค่าทำอะไร:

  • display_errors=On: แสดงข้อผิดพลาดของ PHP โดยตรงในเบราว์เซอร์ (ช่วยในการดีบัก แต่เสี่ยงอันตรายในระบบโปรดักชัน)
  • display_startup_errors=On: แสดงข้อผิดพลาดที่เกิดขึ้นระหว่างการเริ่มต้น PHP
  • error_reporting=E_ALL: รายงานข้อผิดพลาดทุกประเภท (คำเตือน, การแจ้งเตือน, ฯลฯ)
  • log_errors=On: บันทึกข้อผิดพลาดลงในไฟล์ล็อก
  • error_log: ที่ที่ PHP บันทึกล็อกข้อผิดพลาด
  • memory_limit=256M: หน่วยความจำสูงสุดที่สคริปต์สามารถใช้ได้ (เพิ่มค่าได้ถ้าหากคุณเจอข้อผิดพลาด “memory exhausted”)
  • upload_max_filesize=64M: ขนาดสูงสุดของไฟล์ที่สามารถอัปโหลดได้
  • post_max_size=64M: ขนาดสูงสุดสำหรับข้อมูล POST (ต้องมากกว่า upload_max_filesize)
  • max_execution_time=300: ระยะเวลาสูงสุดที่สคริปต์สามารถทำงานได้ (วินาที)
  • date.timezone: กำหนดเขตเวลามาตรฐาน (ใช้เขตเวลาท้องถิ่นของคุณ: Asia/Kolkata, Europe/London, UTC เป็นต้น)

คำเตือนการใช้งานในระบบจริง: อย่าใช้การตั้งค่าพัฒนานี้ในระบบจริงเด็ดขาด ตั้งค่า display_errors=Off เสมอ และใช้ระดับการรายงานข้อผิดพลาดที่เหมาะสมบนเซิร์ฟเวอร์จริง

หลังจากทำการเปลี่ยนแปลงแล้ว ให้รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ:

# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm

กำลังตรวจสอบการตั้งค่าของคุณ

ตรวจสอบว่าการเปลี่ยนแปลงของคุณมีผลหรือไม่:

# For CLI
php -i | grep display_errors

# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php

เยี่ยมชมไฟล์ทดสอบในเบราว์เซอร์ของคุณและค้นหา display_errors มันควรจะแสดง On ลบไฟล์ทดสอบหลังจากตรวจสอบแล้ว

หากการเปลี่ยนแปลงของคุณไม่ปรากฏ:

  1. ตรวจสอบให้แน่ใจว่าคุณได้แก้ไขไฟล์ php.ini ที่ถูกต้อง (CLI กับเว็บเซิร์ฟเวอร์)
  2. ตรวจสอบการสะกดผิดในชื่อการตั้งค่า (ตัวพิมพ์ใหญ่พิมพ์เล็กมีผล)
  3. รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณหลังจากทำการเปลี่ยนแปลง
  4. การตั้งค่าบางอย่างสามารถถูกแทนที่โดย .htaccess (Apache) หรือ php.ini ในไดเรกทอรีโปรเจกต์ของคุณ

คุณสามารถเริ่มใช้ PHP ได้ทันที แต่คุณอาจต้องการใช้ไลบรารีต่าง ๆ เพื่อสร้างแอปพลิเคชัน PHP อย่างรวดเร็ว ก่อนที่คุณจะทดสอบสภาพแวดล้อม PHP ของคุณ ให้ตั้งค่าตัวจัดการการพึ่งพาสำหรับโปรเจกต์ของคุณก่อน

ขั้นตอนที่ 5 — การตั้งค่า Composer สำหรับการจัดการ Dependency (ทางเลือก)

ไลบรารีคือชุดโค้ดที่สามารถช่วยให้คุณแก้ปัญหาทั่วไปโดยไม่จำเป็นต้องเขียนทุกอย่างด้วยตัวเอง เนื่องจากมีไลบรารีหลายตัวที่สามารถใช้ได้ การใช้ตัวจัดการการพึ่งพาจะช่วยให้คุณจัดการหลายไลบรารีได้เมื่อคุณมีประสบการณ์ในการเขียน PHP มากขึ้น

Composer เป็นเครื่องมือสำหรับจัดการการพึ่งพาใน PHP มันช่วยให้คุณประกาศไลบรารีที่โปรเจกต์ของคุณขึ้นอยู่ด้วย และจะจัดการติดตั้งและอัปเดตแพ็กเกจเหล่านี้ให้

แม้จะมีความคล้ายคลึงกัน แต่ Composer ไม่ใช่ตัวจัดการแพ็กเกจในความหมายเดียวกับ yum หรือ apt มันจัดการกับ “แพ็กเกจ” หรือไลบรารี แต่จะจัดการแบบต่อโปรเจกต์ ติดตั้งไว้ในไดเรกทอรี (เช่น vendor) ภายในโปรเจกต์ของคุณ โดยค่าเริ่มต้น มันจะไม่ติดตั้งอะไรแบบทั่วทั้งระบบ ดังนั้นมันจึงเป็น ตัวจัดการการพึ่งพา อย่างไรก็ตาม มันรองรับโปรเจกต์แบบทั่วโลกเพื่อความสะดวกผ่านคำสั่ง global

ไอเดียนี้ไม่ใช่เรื่องใหม่ และ Composer ได้รับแรงบันดาลใจอย่างมากจาก npm ของ Node และ bundler ของ Ruby

สมมติว่า :

  • คุณมีโปรเจกต์ที่ขึ้นอยู่กับหลายไลบรารี
  • บางไลบรารีเหล่านั้นขึ้นอยู่กับไลบรารีอื่น ๆ

นักประพันธ์เพลง:

  • ช่วยให้คุณสามารถระบุไลบรารีที่คุณพึ่งพาได้
  • ค้นหาว่าเวอร์ชันใดของแพ็กเกจใดบ้างที่สามารถและจำเป็นต้องติดตั้ง และติดตั้งโดยการดาวน์โหลดลงในโปรเจกต์ของคุณ
  • ช่วยให้คุณอัปเดตการพึ่งพาทั้งหมดของคุณด้วยคำสั่งเดียว
  • ช่วยให้คุณสามารถดูบท การใช้งานพื้นฐาน เพื่อรายละเอียดเพิ่มเติมเกี่ยวกับการประกาศการพึ่งพา

ดาวน์โหลดตัวติดตั้ง Composer:

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

ตรวจสอบความสมบูรณ์ของตัวติดตั้งโดยการตรวจสอบค่าแฮช SHA-384 ของมัน รับค่าแฮชล่าสุด:

HASH=$(curl -sS https://composer.github.io/installer.sig)

ตรวจสอบว่าแฮชตรงกันหรือไม่:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

คุณควรดู:

Installer verified

ถ้าคุณเห็น Installer corrupt แสดงว่าการดาวน์โหลดไม่สมบูรณ์หรือถูกดัดแปลง ดาวน์โหลดตัวติดตั้งอีกครั้งและตรวจสอบแฮช หากยังล้มเหลว ให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณหรือลองดาวน์โหลดจากเครือข่ายอื่น

ติดตั้ง Composer ทั่วระบบ:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

คุณจะได้รับผลลัพธ์ที่คล้ายกับนี้:

All settings correct for using Composer
Downloading...

Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

ทดสอบการติดตั้งของคุณ:

composer

คุณจะได้รับผลลัพธ์ดังต่อไปนี้:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display help for the given command. When no command is given display help for the list command
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
      --no-scripts               Skips the execution of all scripts defined in composer.json file.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .

นี่เป็นการยืนยันว่า Composer ถูกติดตั้งบนระบบของคุณเรียบร้อยแล้วและสามารถใช้งานได้ทั่วระบบ

หมายเหตุ: หากคุณต้องการมีโปรแกรม Composer แยกสำหรับแต่ละโครงการที่คุณโฮสต์บนเซิร์ฟเวอร์ คุณสามารถติดตั้งแบบเฉพาะโครงการได้ วิธีนี้ยังมีประโยชน์เมื่อผู้ใช้ระบบของคุณไม่มีสิทธิ์ในการติดตั้งซอฟต์แวร์ทั่วทั้งระบบ

ในการทำเช่นนี้ ให้ใช้คำสั่ง php /tmp/composer-setup.php โดยไม่ต้องใส่อาร์กิวเมนต์ใด ๆ คำสั่งนี้จะสร้างไฟล์ composer.phar ในไดเรกทอรีปัจจุบันของคุณ ซึ่งคุณสามารถรันได้โดยใช้ php composer.phar

ขั้นตอนที่ 6 — การใช้ Composer ในโปรเจกต์ PHP

ในขั้นตอนสุดท้าย คุณสามารถเริ่มต้นโปรเจกต์ของคุณด้วย composer init ได้ตามต้องการ ซึ่งจะสร้างไฟล์ composer.json ขึ้นมาเพื่อจัดการ dependencies ของโปรเจกต์ การเริ่มต้นโปรเจกต์ยังช่วยให้คุณกำหนดรายละเอียดของโปรเจกต์ เช่น ผู้แต่งและใบอนุญาต และใช้ฟังก์ชัน autoload ของ Composer ได้ คุณสามารถกำหนด dependencies ตอนนี้หรือเพิ่มในภายหลังก็ได้

สร้างโฟลเดอร์โปรเจกต์และเริ่มต้น Composer:

cd ~
mkdir example-project
cd example-project
composer init

การรันคำสั่งนี้จะเริ่มตัวช่วยติดตั้ง รายละเอียดที่คุณกรอกในตัวช่วยติดตั้งสามารถแก้ไขได้ในภายหลัง ดังนั้นคุณสามารถปล่อยค่าพร้อมใช้งานเริ่มต้นแล้วกด ENTER ได้ หากคุณยังไม่พร้อมติดตั้งส่วนประกอบเสริมใด ๆ คุณสามารถเลือก no กรอกรายละเอียดของคุณเมื่อมีการถามแต่ละขั้นตอน:

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n

{
    "name": "sammy/project1",
    "type": "project",
    "authors": [
        {
            "name": "Sammy",
            "email": "sammy@linux-console.net"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

ก่อนที่คุณจะยืนยันการสร้าง คุณจะเห็นตัวอย่างไฟล์ composer.json ที่ตัวช่วยสร้างจะสร้างขึ้น หากทุกอย่างดูเรียบร้อย คุณสามารถยืนยันค่าเริ่มต้นเป็น yes ได้ หากคุณต้องการเริ่มต้นใหม่ ให้เลือก no

ครั้งแรกที่คุณกำหนด dependencies ใด ๆ Composer จะสร้างโฟลเดอร์ vendor ขึ้นมา dependencies ทั้งหมดจะถูกติดตั้งในโฟลเดอร์ vendor นี้ Composer ยังสร้างไฟล์ composer.lock ไฟล์นี้ระบุเวอร์ชัน ที่แม่นยำ ของแต่ละ dependency และ sub-dependency ที่ใช้ในโปรเจกต์ของคุณ ซึ่งทำให้มั่นใจได้ว่าเครื่องใด ๆ ที่รันโปรแกรมของคุณจะใช้เวอร์ชันเดียวกันของแต่ละแพ็กเกจ

หมายเหตุ: โฟลเดอร์ vendor ไม่ควรถูกส่งขึ้นระบบควบคุมเวอร์ชันของคุณ (VCS) โฟลเดอร์ vendor จะบรรจุเฉพาะแพ็กเกจที่คุณติดตั้งจากผู้จัดจำหน่ายรายอื่น ๆ ผู้จัดจำหน่ายเหล่านั้นจะดูแลโค้ดของตนเองในระบบควบคุมเวอร์ชันของพวกเขาเอง คุณควรติดตามเฉพาะโค้ดที่คุณเขียนเอง แทนที่จะส่งโฟลเดอร์ vendor ขึ้นไป คุณเพียงแค่ต้องส่งไฟล์ composer.json และ composer.lock ขึ้นไป คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการละเว้นไฟล์เฉพาะได้ใน How To Use Git: A Reference Guide.

ตอนนี้ที่คุณได้ติดตั้ง PHP และมีวิธีในการจัดการ dependencies ของโปรเจกต์ด้วย Composer แล้ว คุณก็พร้อมที่จะทดสอบสภาพแวดล้อมของคุณ

ขั้นตอนที่ 7 — การทดสอบสภาพแวดล้อม PHP

สร้างและรันสคริปต์ PHP พื้นฐานเพื่อตรวจสอบการติดตั้งของคุณ:

nano hello.php

เพิ่มโค้ด PHP ต่อไปนี้:

<?php
echo 'Hello World!';
?>

บันทึกและปิดไฟล์ (กด CTRL+X จากนั้น Y แล้ว ENTER) รันสคริปต์:

php hello.php

ถ้า PHP ถูกประมวลผลอย่างถูกต้อง คุณจะเห็นเฉพาะตัวอักษรภายในเครื่องหมายคำพูดเท่านั้น:

Hello World!

PHP ได้ประมวลผลสคริปต์เรียบร้อยแล้ว ซึ่งหมายความว่าสภาพแวดล้อม PHP ของคุณถูกติดตั้งเรียบร้อยและคุณพร้อมที่จะเริ่มต้นการเขียนโปรแกรมต่อไป

ขั้นตอนที่ 8 — การตั้งค่าโปรเจกต์ PHP จริง

เฟรมเวิร์ก PHP สมัยใหม่อย่าง Laravel, Symfony และ WordPress ต้องการส่วนขยาย PHP บางอย่างและ Composer ติดตั้งเฟรมเวิร์กโดยใช้ Composer หรือโปรแกรมติดตั้งของเฟรมเวิร์ก จากนั้นกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณให้ชี้ไปยังไดเรกทอรีสาธารณะของโปรเจกต์

การตั้งค่า Laravel

ติดตั้ง Laravel โดยใช้ Composer:

composer create-project laravel/laravel my-laravel-app
cd my-laravel-app

คำสั่งนี้จะดาวน์โหลด Laravel และส่วนเสริมทั้งหมดของมัน กระบวนการอาจใช้เวลาสองสามนาที

Laravel ต้องการส่วนขยาย PHP เหล่านี้ (ติดตั้งในขั้นตอนที่ 1):

  • php8.1-mbstring - การจัดการสตริงแบบหลายไบต์
  • php8.1-xml - การแยกวิเคราะห์ XML
  • php8.1-curl - การร้องขอ HTTP
  • php8.1-zip - การจัดการไฟล์เก็บถาวร
  • php8.1-bcmath - คณิตศาสตร์ความแม่นยำแบบไม่จำกัด

ถ้า Laravel บอกว่า “ขาด mbstring ” แม้ว่าคุณจะติดตั้งแล้ว:

โดยปกติแล้วนี่หมายความว่า extension ถูกติดตั้งแล้วแต่ยังไม่ได้โหลด ตรวจสอบ:

  1. ตรวจสอบว่าได้ติดตั้งส่วนขยายแล้ว:
php -m | grep mbstring
  1. ถ้ามันหายไป ให้ติดตั้ง:
sudo apt install php8.1-mbstring
  1. หากติดตั้งแล้วแต่ไม่แสดง ให้รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  1. ตรวจสอบว่าไฟล์ php.ini ใดกำลังถูกใช้งาน ตัวติดตั้งของ Laravel ใช้ PHP จาก CLI ดังนั้นตรวจสอบว่า:
php --ini

ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานส่วนเสริมในไฟล์ php.ini ของ CLI แล้ว

กำลังตรวจสอบการติดตั้ง Laravel:

หลังจากการติดตั้งเสร็จสิ้น ให้เริ่มเซิร์ฟเวอร์พัฒนา Laravel:

php artisan serve

คุณควรดู:

INFO  Server running on [http://127.0.0.1:8000]

ไปที่ http://localhost:8000 ในเบราว์เซอร์ของคุณ คุณควรจะเห็นหน้า welcome ของ Laravel

สำหรับการตั้งค่าที่เหมือนกับการใช้งานจริงกับ Apache หรือ Nginx:

ตั้งค่าเว็บเซิร์ฟเวอร์ของคุณให้ชี้ไปที่โฟลเดอร์ public (ไม่ใช่รากของโปรเจกต์) public/index.php ของ Laravel เป็นจุดเริ่มต้นสำหรับคำร้องขอทั้งหมด

หมายเหตุ: เรียนรู้เพิ่มเติมเกี่ยวกับ Laravel ในบทแนะนำของเราเกี่ยวกับวิธีการติดตั้ง Laravel บน Ubuntu

การตั้งค่า WordPress

ดาวน์โหลดและแยกไฟล์ WordPress:

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress

WordPress ต้องการฐานข้อมูล MySQL หรือ MariaDB ติดตั้ง MySQL หากจำเป็น:

sudo apt install mysql-server
sudo mysql_secure_installation

สคริปต์ mysql_secure_installation จะถามคุณให้:

  • ตั้งรหัสผ่านรูท
  • ลบผู้ใช้ที่ไม่ระบุชื่อ
  • ห้ามเข้าสู่ระบบ root จากระยะไกล
  • ลบฐานข้อมูลทดสอบ
  • โหลดตารางสิทธิ์ใหม่

สร้างฐานข้อมูลและผู้ใช้สำหรับ WordPress:

sudo mysql -u root -p

ในพรอมต์ของ MySQL:

CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

แทนที่ secure_password ด้วยรหัสผ่านที่แข็งแรง WordPress จะใช้ข้อมูลรับรองเหล่านี้เพื่อติดต่อกับฐานข้อมูล

ถ้า WordPress ไม่สามารถเชื่อมต่อกับฐานข้อมูลได้:

  1. ตรวจสอบว่า MySQL กำลังทำงานอยู่:
sudo systemctl status mysql
  1. ทดสอบการเชื่อมต่อฐานข้อมูล:
mysql -u wpuser -p wordpress_db

ถ้านี่ล้มเหลว ให้ตรวจสอบ:

  • ชื่อผู้ใช้และรหัสผ่านถูกต้อง
  • ฐานข้อมูลนี้มีอยู่: SHOW DATABASES;
  • ผู้ใช้มีสิทธิ์ดังนี้: SHOW GRANTS FOR 'wpuser'@'localhost';
  1. ตรวจสอบว่ามีการติดตั้งส่วนขยาย MySQL ของ PHP หรือไม่:
php -m | grep mysql

ถ้าไม่มี ให้ติดตั้ง:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx

การติดตั้ง WordPress เสร็จสมบูรณ์:

กำหนดค่าเว็บเซิร์ฟเวอร์ของคุณให้ชี้ไปที่ /var/www/wordpress (ดูขั้นตอนที่ 2 สำหรับ Apache หรือขั้นตอนที่ 3 สำหรับ Nginx) จากนั้นเปิดเว็บไซต์ในเบราว์เซอร์ของคุณ WordPress จะแจ้งให้คุณ:

  1. เลือกภาษาของคุณ
  2. กรอกข้อมูลประจำตัวฐานข้อมูล (ใช้ฐานข้อมูล ชื่อผู้ใช้ และรหัสผ่านที่คุณสร้างขึ้น)
  3. ดำเนินการติดตั้งให้เสร็จสมบูรณ์

หมายเหตุ: สำหรับการติดตั้ง WordPress อย่างละเอียด ดูได้ที่ วิธีติดตั้ง WordPress ด้วย LAMP บน Ubuntu

การตั้งค่า Symfony

ติดตั้ง Symfony โดยใช้ Composer:

composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-app

Symfony ต้องการส่วนขยายเหมือนกับ Laravel เริ่มเซิร์ฟเวอร์สำหรับพัฒนา:

symfony server:start

หรือใช้เซิร์ฟเวอร์ที่มีมาในตัวของ PHP:

php -S localhost:8000 -t public

หากการติดตั้ง Symfony ล้มเหลวพร้อมข้อผิดพลาดของส่วนขยาย:

ตรวจสอบให้แน่ใจว่ามีการติดตั้งและโหลดส่วนขยายที่จำเป็นทั้งหมดแล้ว

php -m | grep -E 'mbstring|xml|curl|zip|bcmath'

หากมีตัวใดที่หายไป ให้ติดตั้งและรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ

ขั้นตอนที่ 9 — แนวทางปฏิบัติที่ดีที่สุดสำหรับการพัฒนาในท้องถิ่น

รักษาความปลอดภัยของสภาพแวดล้อมในเครื่องของคุณ ใช้การควบคุมเวอร์ชัน กำหนดสิทธิ์ไฟล์อย่างเหมาะสม และตั้งค่าการกำหนดค่าที่สอดคล้องกับสภาพแวดล้อมเฉพาะ การปฏิบัติเหล่านี้ช่วยป้องกันปัญหาด้านความปลอดภัยและทำให้การพัฒนาราบรื่นขึ้น

ข้อพิจารณาด้านความปลอดภัย

แม้ในการพัฒนาท้องถิ่น ก็ให้ปฏิบัติตามแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด:

  1. ปิดการใช้งานฟังก์ชัน PHP ที่เป็นอันตรายในสภาพแวดล้อมจริง: ฟังก์ชันเช่น exec(), system(), และ shell_exec() ควรถูกจำกัดในไฟล์ php.ini ของสภาพแวดล้อมจริง

  2. ใช้ตัวแปรแวดล้อม: เก็บค่าการตั้งค่าที่ละเอียดอ่อนในไฟล์ .env (อย่าทำการคอมมิตไฟล์เหล่านี้ลงในระบบควบคุมเวอร์ชัน) Laravel และ Symfony รองรับฟีเจอร์นี้โดยตรง

  3. ตั้งค่าการอนุญาตไฟล์ให้เหมาะสม: ไฟล์ของเว็บเซิร์ฟเวอร์ควรอ่านได้โดยผู้ใช้เว็บเซิร์ฟเวอร์ แต่ไม่ควรเขียนได้

sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;

ทำไมสิทธิ์เหล่านี้ถึงสำคัญ: โฟลเดอร์ต้องการ 755 (อ่าน เขียน และรันได้สำหรับเจ้าของ; อ่านและรันได้สำหรับผู้อื่น) เพื่อให้เว็บเซิร์ฟเวอร์สามารถเข้าถึงได้ ไฟล์ต้องการ 644 (อ่านและเขียนได้สำหรับเจ้าของ; อ่านได้อย่างเดียวสำหรับผู้อื่น) เพื่อให้เว็บเซิร์ฟเวอร์สามารถอ่านไฟล์ได้โดยไม่สามารถแก้ไขไฟล์ได้ ซึ่งช่วยป้องกันสคริปต์ที่เป็นอันตรายไม่ให้เขียนทับไฟล์ของคุณ

การรวมระบบควบคุมเวอร์ชัน

ควรใช้ระบบควบคุมเวอร์ชันสำหรับโปรเจกต์ PHP ของคุณเสมอ เริ่มต้น Git ในไดเรกทอรีโปรเจกต์ของคุณ:

cd /var/www/your-project
git init

สร้างไฟล์ .gitignore เพื่อยกเว้นไฟล์ที่ไม่จำเป็น:

/vendor/
/node_modules/
.env
.DS_Store
*.log

การเพิ่มประสิทธิภาพ

เพื่อประสิทธิภาพที่ดียิ่งขึ้นในการพัฒนาท้องถิ่น:

  • เปิดใช้งาน OPcache: OPcache มาพร้อมกับ PHP 8.1 และช่วยเพิ่มประสิทธิภาพโดยการเก็บโค้ด PHP ที่คอมไพล์แล้วในแคช

  • ใช้การปรับแต่งตัวโหลดอัตโนมัติของ Composer:

composer install --optimize-autoloader --no-dev
  • กำหนดค่าพูล PHP-FPM เพื่อการจัดการทรัพยากรที่ดียิ่งขึ้นหากใช้ Nginx

ขั้นตอนที่ 10 — การแก้ไขปัญหาที่พบบ่อย

ปัญหาการติดตั้ง PHP ที่พบบ่อย ได้แก่ การขาดส่วนขยาย สิทธิ์ไฟล์ไม่ถูกต้อง ข้อผิดพลาดการกำหนดค่าเว็บเซิร์ฟเวอร์ และความขัดแย้งของเวอร์ชัน ปัญหาส่วนใหญ่สามารถแก้ไขได้โดยการตรวจสอบการติดตั้งส่วนขยาย ตรวจสอบสิทธิ์ไฟล์ และทบทวนบันทึกของเว็บเซิร์ฟเวอร์

ไม่สามารถโหลดส่วนขยาย PHP

ถ้า php -m ไม่แสดงส่วนขยายที่คุณเพิ่งติดตั้ง:

  • ตรวจสอบว่าได้ติดตั้งเรียบร้อยแล้ว:
dpkg -l | grep php8.1-extension_name
  • ตรวจสอบว่าไฟล์ส่วนขยายมีอยู่หรือไม่:
ls /usr/lib/php/*/extension_name.so
  • ตรวจสอบว่ามีการเปิดใช้งานใน php.ini หรือไม่ ส่วนขยายบางอย่างจำเป็นต้องเปิดใช้งานโดยชัดเจน:
grep -i extension_name /etc/php/8.1/*/php.ini
  • รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  • ตรวจสอบว่า php.ini ใดกำลังถูกใช้งาน:
php --ini

ตรวจสอบให้แน่ใจว่าคุณกำลังตรวจสอบไฟล์ php.ini ที่ถูกต้อง (CLI กับเว็บเซิร์ฟเวอร์)

หากส่วนขยายยังไม่ปรากฏ:

  • ส่วนขยายบางตัวต้องการไลบรารีระบบเพิ่มเติม ตรวจสอบเอกสารของส่วนขยายนั้น
  • ตรวจสอบว่าคุณติดตั้งเวอร์ชันที่ถูกต้องแล้ว (php8.1-extension ไม่ใช่ php8.0-extension)
  • ตรวจสอบเวอร์ชัน PHP ที่ขัดแย้งกันซึ่งอาจรบกวน

ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน 500

ข้อผิดพลาด 500 หมายความว่าเซิร์ฟเวอร์พบข้อผิดพลาดแต่ไม่สามารถแสดงรายละเอียดได้ ตรวจสอบบันทึกข้อผิดพลาด:

# Apache
sudo tail -20 /var/log/apache2/error.log

# Nginx
sudo tail -20 /var/log/nginx/error.log

# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.log

สาเหตุและวิธีแก้ไขที่พบบ่อย:

  1. สิทธิ์ไฟล์ไม่ถูกต้อง: ไฟล์ PHP ต้องสามารถอ่านได้โดยผู้ใช้เว็บเซิร์ฟเวอร์
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
  1. ส่วนขยาย PHP ที่ขาดหายไป: ตรวจสอบบันทึกข้อผิดพลาดสำหรับข้อความเช่น “เรียกใช้ฟังก์ชันที่ไม่รู้จัก ”. ติดตั้งส่วนขยายที่ขาดหายไปและรีสตาร์ทเว็บเซิร์ฟเวอร์

  2. ข้อผิดพลาดทางไวยากรณ์ในไฟล์ PHP: บันทึกข้อผิดพลาดจะแสดงไฟล์และหมายเลขบรรทัด ปัญหาที่พบบ่อย:

    • ขาดเครื่องหมายอัฒภาค
    • วงเล็บหรือเครื่องหมายคำพูดที่ยังไม่ได้ปิด
    • การใช้ฟังก์ชันหรือคลาสที่ยังไม่ถูกกำหนด
  3. การตั้งค่าเซิร์ฟเวอร์เว็บไม่ถูกต้อง:

    • Apache: ตรวจสอบการกำหนดค่าของโฮสต์เสมือนและการโหลดโมดูล
    • Nginx: ตรวจสอบเส้นทางซ็อกเก็ต PHP-FPM และการตั้งค่า FastCGI
  4. เกินขีดจำกัดหน่วยความจำ PHP: เพิ่ม memory_limit ใน php.ini หากคุณเห็นข้อผิดพลาด “ขนาดหน่วยความจำที่อนุญาตหมดแล้ว”

ความขัดแย้งของเวอร์ชัน PHP

ถ้า php -v แสดงเวอร์ชันที่แตกต่างจากที่คาดไว้ แสดงว่าคุณติดตั้ง PHP หลายเวอร์ชันอยู่

ตรวจสอบเวอร์ชันที่ติดตั้ง:

dpkg -l | grep php | grep -E 'php[0-9]'

ใช้เวอร์ชันที่ถูกต้องอย่างชัดเจน:

php8.1 -v
php8.1 -m

อัปเดตเว็บเซิร์ฟเวอร์ของคุณเพื่อใช้ PHP 8.1:

สำหรับ Apache ให้ปิดโมดูล PHP อื่น ๆ และเปิดใช้ PHP 8.1:

sudo a2dismod php7.4 php8.0  # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2

สำหรับ PHP-FPM ให้หยุดเวอร์ชันอื่นและเริ่ม PHP 8.1:

sudo systemctl stop php7.4-fpm php8.0-fpm  # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

ตั้งค่า PHP 8.1 เป็นเวอร์ชัน CLI เริ่มต้น:

sudo update-alternatives --set php /usr/bin/php8.1

ปัญหาความจำของ Composer

หาก Composer ใช้หน่วยความจำหมด คุณจะเห็นข้อผิดพลาดประมาณนี้:

Fatal error: Allowed memory size of 134217728 bytes exhausted

แก้ไขโดยการรัน Composer พร้อมเพิ่มหน่วยความจำ:

php -d memory_limit=512M /usr/local/bin/composer install

หรือเพิ่มขีดจำกัดหน่วยความจำของ PHP ใน php.ini:

memory_limit = 512M

หากการติดตั้ง Composer ล้มเหลวเนื่องจากแฮชไม่ตรงกัน:

การตรวจสอบแฮชอาจล้มเหลวหาก:

  • โปรแกรมติดตั้งได้รับการอัปเดตตั้งแต่คุณดาวน์โหลด (ดาวน์โหลดใหม่เพื่อรับแฮชล่าสุด)
  • การดาวน์โหลดของคุณเกิดข้อผิดพลาด (ลองดาวน์โหลดใหม่อีกครั้ง)
  • คุณอยู่เบื้องหลังพร็อกซีที่แก้ไขไฟล์ (ตรวจสอบการตั้งค่าเครือข่ายของคุณ)

ปัญหาการเชื่อมต่อฐานข้อมูล

หากแอปพลิเคชัน PHP ของคุณไม่สามารถเชื่อมต่อกับ MySQL/MariaDB ได้ คุณอาจเห็นข้อผิดพลาดดังนี้:

SQLSTATE[HY000] [2002] No such file or directory

หรือ

Access denied for user 'username'@'localhost'

ขั้นตอนการแก้ไขปัญหา:

  1. ตรวจสอบให้แน่ใจว่าบริการฐานข้อมูลกำลังทำงานอยู่:
sudo systemctl status mysql

ถ้ามันยังไม่ทำงาน ให้เริ่มมัน:

sudo systemctl start mysql
sudo systemctl enable mysql
  1. ตรวจสอบว่ามีการติดตั้งส่วนขยาย MySQL ของ PHP หรือไม่:
php -m | grep mysql

ถ้าไม่มี ให้ติดตั้ง:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx
  1. ตรวจสอบข้อมูลรับรองและสิทธิ์ของฐานข้อมูล ทดสอบการเชื่อมต่อ:
mysql -u username -p database_name

ถ้านี่ล้มเหลว ให้ตรวจสอบ:

  • ชื่อผู้ใช้และรหัสผ่านถูกต้อง
  • ฐานข้อมูลนี้มีอยู่: SHOW DATABASES;
  • ผู้ใช้มีสิทธิ์: SHOW GRANTS FOR 'username'@'localhost';

หมายเหตุ: สำหรับการตั้งค่า MySQL ดูที่ วิธีติดตั้ง MySQL บน Ubuntu

ไฟล์ PHP แสดงเป็นข้อความธรรมดาแทนที่จะรัน

ถ้าไฟล์ PHP ของคุณแสดงเป็นข้อความธรรมดาในเบราว์เซอร์:

  1. ตรวจสอบนามสกุลไฟล์: ต้องเป็น .php ไม่ใช่ .txt หรือ .html

  2. ตรวจสอบว่า PHP กำลังประมวลผลไฟล์:

    • Apache: ตรวจสอบว่า mod_php เปิดใช้งานอยู่หรือไม่: apache2ctl -M | grep php
    • Nginx: ตรวจสอบว่า PHP-FPM กำลังทำงานและเส้นทางซ็อกเก็ตถูกต้อง
  3. ตรวจสอบสิทธิ์ของไฟล์: เซิร์ฟเวอร์เว็บต้องสามารถอ่านไฟล์ได้

  4. ตรวจสอบว่าไฟล์มีโค้ด PHP: ตรวจสอบว่าเริ่มต้นด้วย <?php หรือ <?

  5. ตรวจสอบการตั้งค่าเซิร์ฟเวอร์เว็บ:

    • Apache: โฮสต์เสมือนอาจไม่ได้ถูกกำหนดค่าอย่างถูกต้อง
    • Nginx: บล็อก location ~ \.php$ อาจขาดหรือไม่ถูกต้อง

ปัญหาการอัปโหลดไฟล์

หากการอัปโหลดไฟล์ล้มเหลว คุณอาจเห็นข้อผิดพลาดเช่น:

The uploaded file exceeds the upload_max_filesize directive

ตรวจสอบการตั้งค่า php.ini เหล่านี้:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

สำคัญ: post_max_size ต้องมีค่ามากกว่า upload_max_filesize หากคุณตั้งค่า upload_max_filesize=100M ให้ตั้งค่า post_max_size=110M หรือมากกว่า

หากการอัปโหลดยังล้มเหลว:

  1. ตรวจสอบบันทึกข้อผิดพลาดเพื่อดูข้อความข้อผิดพลาดเฉพาะ
  2. ตรวจสอบว่าไดเรกทอรีอัปโหลดมีอยู่และสามารถเขียนได้:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory
  1. ตรวจสอบพื้นที่ดิสก์: df -h
  2. ตรวจสอบว่าแบบฟอร์มใช้ enctype="multipart/form-data"

รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณหลังจากทำการเปลี่ยนแปลง php.ini

คำถามที่พบบ่อย

ฉันจะติดตั้ง PHP 8.1 บน Ubuntu ได้อย่างไร?

ติดตั้ง PHP 8.1 โดยใช้ตัวจัดการแพ็กเกจของ Ubuntu: sudo apt update && sudo apt install php8.1 PHP 8.1 มีให้ในรีโพซิทอรีเริ่มต้นของ Ubuntu ดังนั้นจึงไม่จำเป็นต้องใช้แหล่งแพ็กเกจเพิ่มเติม

ส่วนขยาย PHP ตัวใดที่จำเป็นสำหรับการพัฒนา?

การติดตั้งส่วนขยายที่จำเป็นรวมถึง php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd และ php8.1-bcmath ส่วนขยายเหล่านี้ครอบคลุมการเชื่อมต่อฐานข้อมูล การร้องขอ HTTP การจัดการสตริง และการประมวลผลรูปภาพ

ฉันจะตั้งค่า PHP กับ Apache หรือ Nginx ได้อย่างไร?

สำหรับ Apache ให้ติดตั้ง libapache2-mod-php8.1 และเปิดใช้งานด้วย sudo a2enmod php8.1 สำหรับ Nginx ให้ติดตั้ง php8.1-fpm และกำหนดค่า Nginx ให้ส่งคำขอ PHP ไปยังซ็อกเก็ต PHP-FPM โดยใช้ FastCGI

ฉันจะตรวจสอบได้อย่างไรว่า PHP ถูกติดตั้งอย่างถูกต้อง

รัน php -v เพื่อตรวจสอบเวอร์ชันของ PHP สร้างไฟล์ทดสอบโดยใช้ <?php phpinfo(); ?> แล้วเข้าถึงไฟล์นั้นผ่านเว็บเซิร์ฟเวอร์ของคุณเพื่อดูข้อมูลการตั้งค่า PHP อย่างละเอียด

ฉันสามารถรัน Laravel หรือ WordPress บนเครื่องตัวเองด้วยการตั้งค่านี้ได้ไหม?

ใช่ Laravel ต้องการ Composer และส่วนขยาย PHP มาตรฐานที่กล่าวไว้ข้างต้น ส่วน WordPress ต้องการฐานข้อมูล MySQL นอกเหนือจาก PHP ทั้งสองเฟรมเวิร์กสามารถใช้งานได้กับการตั้งค่า Apache หรือ Nginx

ฉันจะติดตั้ง Composer สำหรับโครงการ PHP ได้อย่างไร?

ดาวน์โหลดตัวติดตั้ง Composer ตรวจสอบค่าแฮช แล้วติดตั้งแบบทั่วระบบ: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer ตรวจสอบการติดตั้งด้วย composer --version

ฉันจะแก้ไขปัญหา PHP extensions ที่หายไปได้อย่างไร?

ตรวจสอบส่วนขยายที่ติดตั้งด้วย php -m ติดตั้งส่วนขยายที่ขาดหายไปโดยใช้ sudo apt install php8.1-extension_name จากนั้นรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ

ฉันจะตั้งค่าการรายงานข้อผิดพลาดของ PHP สำหรับการพัฒนาได้อย่างไร?

แก้ไข php.ini และตั้งค่า display_errors=On, error_reporting=E_ALL, และ log_errors=On อย่าลืมปิดการแสดงข้อผิดพลาดในสภาพแวดล้อมการผลิต

ความแตกต่างระหว่าง Apache กับ Nginx สำหรับ PHP คืออะไร?

Apache ใช้ mod_php เพื่อประมวลผล PHP โดยตรง (PHP ถูกฝังอยู่ในกระบวนการของ Apache) ในขณะที่ Nginx ต้องใช้ PHP-FPM (FastCGI Process Manager) ในการจัดการคำขอ PHP (PHP ทำงานเป็นบริการแยกต่างหาก) ดูส่วน “การเลือกระหว่าง Apache และ Nginx” ข้างต้นสำหรับตารางการเปรียบเทียบอย่างละเอียด ทั้งสองวิธีทำงานได้ดี เลือกตามความต้องการด้านประสิทธิภาพ ความคุ้นเคย และโครงสร้างพื้นฐานที่มีอยู่

ฉันสามารถติดตั้ง PHP หลายเวอร์ชันบนระบบเดียวกันได้หรือไม่?

ใช่ ใช้เครื่องมือต่าง ๆ เช่น phpenv หรือ phpbrew อย่างไรก็ตาม สำหรับสภาพแวดล้อมการพัฒนาส่วนใหญ่ การใช้ PHP เวอร์ชันเดียวก็เพียงพอแล้ว ใช้ตัวจัดการเวอร์ชันเมื่อคุณต้องการทดสอบแอปพลิเคชันกับ PHP หลายเวอร์ชัน

บทสรุป

ตอนนี้คุณมีสภาพแวดล้อมการพัฒนาของ PHP 8.1 ที่ตั้งค่าเรียบร้อยบน Ubuntu พร้อมรองรับทั้งเว็บเซิร์ฟเวอร์ Apache และ Nginx การตั้งค่าของคุณรวมถึงส่วนขยาย PHP ที่สำคัญ, Composer สำหรับการจัดการ dependency และการตั้งค่าที่เหมาะสมสำหรับการพัฒนาในเครื่อง

ก่อนที่คุณจะเริ่มโครงการถัดไป ให้พิจารณาการตั้งค่า Integrated Development Environment (IDE) เช่น VS Code พร้อมกับส่วนขยาย PHP สำหรับไฮไลท์ไวยากรณ์ การดีบัก และการสนับสนุน IntelliSense

เมื่อสภาพแวดล้อมของคุณพร้อมแล้ว คุณสามารถสำรวจการพัฒนา PHP ต่อไปได้:

  • เรียนพื้นฐาน PHP กับวิธีการทำงานกับสตริงใน PHP
  • สร้าง API โดยใช้วิธีการใช้งาน Web API ใน PHP
  • เข้าใจฟังก์ชันในวิธีการใช้ฟังก์ชันใน PHP
  • ตั้งค่าฐานข้อมูลพร้อมคำแนะนำวิธีติดตั้งและใช้ PostgreSQL บน Ubuntu

สำหรับการใช้งานในสภาพแวดล้อมการผลิต ควรพิจารณาใช้แพลตฟอร์มแอป Linux-Console.net เพื่อปรับใช้แอปพลิเคชัน PHP ของคุณโดยตรงจาก GitHub พร้อมกับการปรับขนาดอัตโนมัติและใบรับรอง SSL

ขอบคุณที่เรียนรู้ร่วมกับชุมชน Linux-Console.net