Tag Archive PHP

Byphunsanit

PHP: 8.3 บน Ubuntu 23.10.1 แล้ว Error

ลง PHP 8.3 ตัวใหม่น่าสุด ลงบนอูบุนตู 23.10 ตัวใหม่เหมือนกันแต่กลับเจอเอ้อเร้อ php8.3-intl : Depends: libicu70 (>= 70.1-1~) but it is not installable

  1. เข้าไปที่ terminal
  2. ไปแก้ sources.list โดยใช้คำสั่ง
    sudo nano /etc/apt/sources.list
    แล้วเพิ่มไปอีก 1 บรรทัด
    deb http://archive.ubuntu.com/ubuntu/ jammy-proposed main
    แล้ว save โดน CTRL+X และ Y
  3. update package index โดย
    sudo apt-get update
  4. ติดตั้ง libicu70 โดย
    sudo apt-get install libicu70
  5. ทดสอบลง PHP 8.3 โดยใช้ extension ตามที่ WordPress แนะนำ เช่น
    sudo apt-get install php8.3-{bcmath,cgi,cli,common,curl,fpm,gd,gettext,imagick,intl,mbstring,mysql,opcache,soap,xml,xmlrpc,xsl,zip}
  6. enable ให้ใช้บน Apache ได้โดยคำสั่ง
    sudo a2enmod php8.3

อ่านเพิ่มเติม

Byphunsanit

Linux: upgrade PHP version ล่าสุด

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

  1. Update ระบบโดยรวมก่อน

    sudo apt update && sudo apt -y upgrade
  2. เพิ่ม Surý PHP APT repository

    sudo apt update

    sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common

    sudo add-apt-repository ppa:ondrej/php
  3. ติดตั้ง PHP ตัวล่าสุด

    sudo apt install php8.2
  4. เช็ค php version โดย

    php -v
  5. ติดตั้ง extension เพิ่มเติม เช่น

    sudo apt-get install -y libapache2-mod-php8.2 libphp8.2-embed mcrypt openssl php-bcmath php-cli php-common php-curl php-fpm php-gd php-gmp php-intl php-mbstring php-mysql php-tokenizer php-xml php-xmlrpc php-zip php8.2 php8.2-bcmath php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-dev php8.2-fpm php8.2-gd php8.2-imagick php8.2-imap php8.2-mbstring php8.2-mysql php8.2-phpdbg php8.2-soap php8.2-xml php8.2-xmlrpc php8.2-zip
  6. ผูก Apache และ PHP

    sudo apt install apache2 php-fpm

ดูเพิ่มเติม How To Install PHP 8.2 on Ubuntu 22.04|20.04|18.04

Byphunsanit

การติดตั้ง PHP หลายเวอร์ชั่น บน IIS

การติดตั้ง PHP หลายๆ เวอร์ชั่นบน IIS หรือการติดตั้ง UAT และ production server อยู่ในเครื่องเดียวกัน สามารถทำได้โดยใช้ Handler Mappings

การตั้งค่า Handler Mappings

  1. เปิดโปรแกรม Internet Information Services (IIS) Manager
  2. คลิกที่ site ที่ต้องการ, folder ที่จะให้สามารถ run PHP ได้ หรือที่ชื่อ server ถ้าต้องการให้ ทุก site สามารถ run PHP ได้
  3. คลิก Handler Mappings
    Request path:
    *.php
    Module:
    FastCgiModule ถ้าไม่มีให้เลือก GGI เพิ่มในตัวเลือกการติดตั้ง IIS หรืออ่าน note ในหน้า Using FastCGI to Host PHP Applications on IIS 7
    Executable:
    ใส่ path ชี้ไปที่ php-cgi.exe เช่น C:\Program Files\PHP\v7.2\php-cgi.exe อย่าลืมเปลี่ยนช่องด้านหลังจาก *.dll เป็น *.exe ด้วย
    Name:
    เช่น PHP_via_FastCGI 7.2
  4. คลิก OK
  5. ตอบ Yes
  6. (ไม่จำเป็น) คลิกที่ site หรือ server แล้ว restart
  7. Test
Byphunsanit

php: ส่งอีเมล์

การส่งอีเมล์ในภาษา php จะเขียนได้ง่ายๆ ในรูปแบบ

<?php
$headers = 'Content-Type: text/html; charset=UTF-8';
$message = 'เคยได้ยินไหม ที่ใครเคยบอกว่ารัก....เป็นดั่งรองเท้าคู่หนึ่งฉันได้ลองหา เพื่อมีวันหนึ่งที่ฉัน....ได้เจอรองเท้าที่ถูกใจบางทีก็ดูคับเกินไป บางที่ไม่เหมาะสมกับฉัน... ซักเท่าไหร่จนได้มาพบได้เจอรองเท้าคู่หนึ่ง... ที่ดูแล้วเข้ากับฉันมาถึงวันนี้... ก้าวเดินด้วยกันก็นาน... และตัวฉันยังพอใจบางคนบอกไม่สวยเท่าไหร่ แต่นี่คือที่ฉันมั่นใจ* ว่าฉันไม่เคยจะเปลี่ยนใจจากรองเท้าที่ฉันใส่อาจจะดูว่าเก่าเกินไปแต่ฉันก็ผูกพัน ตื่นเช้าขึ้นมา ก็ใส่เดินไป ก้าวไปกับฉันได้ออกไปเจอกับสิ่งดีดี ที่มีด้วยกัน ..... ตลอดไปแม้หนทางที่เดินไป มันจะดูไม่ง่ายดาย แต่ฉันก็ยังจะก้าวไปกับรองเท้าคู่ใจของฉัน .... ต่อไปบางทีก็ดูคับเกินไป บางที่ไม่เหมาะสมกับฉันบางคนบอกไม่สวยเท่าไหร่ แต่นี่คือที่ฉันมั่นใจ(*) ได้ออกไปเจอกับสิ่งดีดี ที่มีด้วยกัน..... ตลอดไปเคยได้ยินไหมที่ใครเคยบอกว่ารักเป็นดั่งรองเท้าคู่หนึ่ง';
$subject = 'ความรักกับรองเท้า';
$to = '[email protected]';

if (mail($to, $subject, $message, $headers)) {
	echo 'ส่งอีเมล์แล้ว';
} else {
	echo 'ไม่สำเร็จ';
}

แต่ถ้าใช้ xampp ในการติดตั้ง server ถึงจะติดตั้ง Mercury (mail server ที่ติดมากับ xampp) จะไม่สามารถส่งได้ทันที การส่งอีเมล์ จะทำให้เกิด error Warning: mail(): “sendmail_from” not set in php.ini or custom “From:” header missing in แก้ได้โดยเปิดไฟล์ C:\xampp\php\php.ini และถ้าใช้ windows ให้ลบ ; หน้า sendmail_from หรือ ถ้าเป็นเม็ค / linux ให้ลบ ; หน้า sendmail_path ออกไป

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = [email protected]

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

แต่ถ้าส่งอีเมล์ไปที่ไม่ใช่ local host จะเห็น error Warning: mail(): SMTP server response: 553 We do not relay non-local mail, sorry. แก้โดยไปดูที่ xampp Control Panel หลัง mercury คลิก Admin จะมี mercury/32 เปิดขึ้นมา ไปที่ Configuration > MercuryS SMTP Server > Connection control แล้วเอาติ๊กหน้า Do not permit SMTP relaying of non-local mail ออกไป