Hướng dẫn dùng myphpinfo trong PHP

PHP là một ngôn ngữ có mục đích chung được sử dụng rộng rãi, đặc biệt thích hợp cho việc phát triển Web và có thể được nhúng vào HTML. PHP chạy trên tất cả các hệ điều hành chính, từ các biến thể Unix bao gồm Linux, FreeBSD, Ubuntu, Debian và Solaris đến Windows và Mac OS X. Nó có thể được sử dụng với tất cả các máy chủ web hàng đầu, bao gồm cả máy chủ Apache, Nginx, OpenBSD. ; ngay cả các môi trường đám mây như Azure và Amazon cũng đang trên đà phát triển.

Nội dung chính

  • 2. Kiểm tra tập lệnh PHP sử dụng kết nối cơ sở dữ liệu
  • 3. Chạy PHP Script đến một thư mục khác bên ngoài htdocs
  • Giới thiệu về Xdebug
  • Cài đặt Xdebug
  • Cài đặt Xdebug trong PHP chạy trực tiếp trên Linux, macOS
  • Cài đặt Xdebug trong PHP trên Windows
  • Sử dụng Xdebug trong Visual Studio Code và PHPStorm
  • Cấu hình Xdebug
  • Thực hiện Debug trên Visual Studio Code
  • Thực hiện Debug với PHPStorm
  • Sử dụng Xdebug trong PHP Container Docker
  • Cài đặt XDebug vào PHP Container
  • Cấu hình để XDebug cho phép Remote Debug
  • Thiết lập Visual Studio Code để Debug với PHP Container

Dưới đây là một số cách kiểm tra tập lệnh PHP.

1. Tạo một tệp với nội dung sau. Đặt tên cho tệp như myphpInfo.php.

2. Sao chép tệp vào thư mục DocumentRoot trên máy chủ web của bạn, ví dụ – / var / www / html. Bạn có thể có một thư mục DocumentRoot khác tùy thuộc vào máy chủ web bạn đang sử dụng và cấu hình được thực hiện cho nó.

3. Thay đổi quyền thành 755 (chỉ dành cho Linux):

# chmod 755 myphpInfo.php

4. Gọi tệp từ trình duyệt:

http://Fully-Qualified-Hostname:PORT#/phpinfo.php

2. Kiểm tra tập lệnh PHP sử dụng kết nối cơ sở dữ liệu

1. Tạo một tệp với nội dung sau. Đặt tên cho tệp như phpdbchk.php:

<html> 
<head> 
<title>PHP Database Connection Test</title> 
</head> 
<body> 

<?php 

$username="scott"; 
$password = 'password'; 
$database_hostname="host.domain"; 
$database_port="port"; 
$database_sid = 'sid';
$database_srvc="servicename";

$easy_connect_syntax = '//'.$database_hostname.':'.$database_port.'/'.$database_srvc; 


// If Oracle 10g libraries are used by PHP try the new Easy Connect syntax. 
// No long connection string is needed. No tnsnames.ora file is required. 
// This does not work with standalone HTTP Server installations

// $conn = OCILogon($username, $password, $easy_connect_syntax); 


// Use this line if TNS is setup properly in $ORACLE_HOME/network/admin 
$conn = OCILogon($username, $password, $database_sid); 


if (!$conn) { 
  $e = ocierror(); 
  print htmlentities($e['message']); 
  exit; 
} 

$query = 'SELECT SYSDATE FROM DUAL';
$stmt = ociparse($conn, $query);
ociexecute($stmt, OCI_DEFAULT);

print 'Checking for the Date and Database Connectivity<br>'; 

$success = 0;
while (ocifetch($stmt)) {
  print "Date: " . ociresult($stmt, "SYSDATE") . "<br>n";
  $success = 1;
}

if ($success) { print 'Success.<p>'; } 
else { print 'Failed to retrieve the date.<p>n'; }

OCILogoff($conn); 


print 'PHP Configuration<br>'; 
print '======================<p>'; 

phpinfo(); 

?> 

</body> 
</html>

2. Đặt ORACLE_HOME và TNS_ADMIN thành các giá trị thích hợp.

3. Sao chép tệp vào thư mục DocumentRoot.

4. Sửa đổi các biến $ username, $ password, $ database_hostname, $ database_port, $ database_sid và $ database_srvc nếu cần cho hệ thống kiểm tra

5. Thay đổi quyền thành 755 (chỉ dành cho Linux): # chmod 755 myphpInfo.php

6. Gọi tệp từ trình duyệt:

http://Fully-Qualified-Hostname:PORT#/phpdbchk.php

Lỗi sau đây xảy ra nếu ORACLE_HOMEnetworkadmintnsnames.ora không được thiết lập đúng hoặc bị thiếu. Nếu nó bị thiếu, một cái từ cơ sở dữ liệu có thể được sao chép lại và sử dụng nguyên trạng.

Warning: ocilogon(): _oci_open_server: 
ORA-12560: TNS:protocol adapter error in [oracle_home]apacheapachehtdocsphpdbchk.php on line 25
ORA-12560: TNS:protocol adapter error

3. Chạy PHP Script đến một thư mục khác bên ngoài htdocs

Ví dụ: nếu bạn muốn đặt các tập lệnh php vào $ ORACLE_HOME / Apache / Apache / phpsrc và chạy chúng từ đó thông qua trình duyệt, ví dụ: http: FQHN:[port]/php/info.php, sau đó làm như sau:

1. tạo thư mục $ ORACLE_HOME / Apache / Apache / phpsrc

2. Sao chép tập lệnh info.php sang $ ORACLE_HOME / Apache / Apache / phpsrc

3. Chỉnh sửa httpd.conf và thêm dòng này:

Alias /php/ $ORACLE_HOME/Apache/Apache/phpsrc

4. Khởi động lại máy chủ http và bây giờ nó sẽ hoạt động:

http:FQHN:[port]/php/info.php

Lưu ý: Info.php script php được sử dụng làm ví dụ, bạn có thể sử dụng bất kỳ tên nào bạn chọn cho các script php của mình.

Trên đây là toàn bộ nội dung của bài viết. Mong rằng bạn sẽ lựa chọn được giải pháp phù hợp nhất với mình. Nếu có bất cứ thắc mắc nào, vui lòng để lại comment để chúng tôi giải đáp nhanh nhất nhé! Cảm ơn bạn!

Hướng dẫn cài đặt Xdebug và sử dụng XDebug để gỡ rối PHP với IDE phổ biến như Visual Studio Code, PHPStorm

  • Xdebug là gì?
  • Cài đặt Xdebug
  • Sử dụng Xdebug
  • Sử dụng Xdebug trong PHP container

Giới thiệu về Xdebug

Xdebug là một extension dành cho PHP, khi cài đặt nó nó sẽ cập nhật lại việc hiện thị lỗi, cập nhật một số lệnh có sẵn (như var_dump), đặc biệt nó cho phép kết nối đến các IDE (như Visual Studio Code, PHPStorm ...) để gỡ rối mã PHP, lúc này từ IDE có thể thực hiện việc đặt các breakpoint (điểm dừng mã để trích xuất, xem các thông tin ...) cũng như các thao tác Debug như : Step Into, Step Over, Restart ...

Cài đặt Xdebug

Cài đặt Xdebug trong PHP chạy trực tiếp trên Linux, macOS

Bạn dùng PEAR/PECL để cài đặt. Mặc định thì lệnh pecl có sẵn khi cài PHP trên macOS với brew (xem phần cài đặt PHP trên macOS). Trên Linux ví dụ CentOS nếu chưa có pecl thì gõ lệnh sau để cải đặt

yum install php-pear

Gõ lệnh pecl sau để cài đặt Xdebug

pecl install xdebug

Sau khi cài đặt cần thêm dòng sau vào php.ini để PHP nạp extension này:

zend_extension="/usr/local/php/modules/xdebug.so"

(Đường dẫn tới xdebug.so có thể khác trên máy bạn - xem kết quả lệnh cài xdebug để biết nó ở đâu)

Cuối cùng gõ lệnh sau để kiểm tra xem PHP có nạp được Xdebug chưa

php -m | grep "xdebug"

Nếu hiện thị dòng xdebug là thành công

Cài đặt Xdebug trong PHP trên Windows

Đối với PHP trên Windows bạn cần tải về một file thư viện xdebug.x.x..dll thích hợp, hãy chạy một script php từ trình duyệt có nội dung:

<?php
    phpinfo();

Khi chạy script đó, từ trình duyệt có kết quả dạng:

Hướng dẫn dùng myphpinfo trong PHP

Hãy chọn tất cả nội dung xuất ra đó (Ctrl - A), rồi copy (Ctrl - C) rồi vào trang xdebug wizard, dán toàn bộ nội dung có được vào hộp nhập liệu của trang đó. Sau đó bấm vào nút bấm Analyse my phpinfo() output, sau khi nó phân tích thì sẽ có đường link để bạn tải xdebug thích hợp về máy. Ví dụ, file tải về là php_xdebug-2.7.2-7.2-vc15-x86_64.dll, hãy lưu vào thư mục chứa phần mở rộng của PHP, trên máy tôi là C:\wamp64\bin\php\php7.2.18\zend_ext

Sau đó thêm vào php.ini (ví dụ C:\wamp64\bin\php\php7.2.18\ini) nội dung:

zend_extension = C:\wamp64\bin\php\php7.2.18\zend_ext\php_xdebug-2.7.2-7.2-vc15-x86_64.dll

Sử dụng Xdebug trong Visual Studio Code và PHPStorm

Phần này hướng dẫn cấu hình sử dụng Xdebug trên 2 IDE nổi tiếng dành cho PHP, một cái miễn phí là Visual Studio Code và cái kia là PHPStorm.

Cấu hình Xdebug

Trước khi cấu hình nắm một số nguyên tắc làm việc của Xdebug khi kết nối với IDE như sau: IDE phải tạo ra một phiên làm việc và mở ra một cổng (mặc định 9000, với địa chỉ IP, mặc định localhost) để XDebug của PHP kết nối vào mỗi khi PHP chạy các script.

Bạn cập nhật vào php.ini nội dung sau:

xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_port=9000

xdebug.profiler_enable=0
xdebug.var_display_max_depth = 5
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
xdebug.profiler_enable=0

#xdebug.remote_log = /var/logs/xdebug.log - chỉnh đến đường dẫn lưu log

xdebug.remote_connect_back=0
xdebug.remote_host=localhost

Thực hiện Debug trên Visual Studio Code

Trong Visual Studio Code, cần cài đặt Extension có tên PHP Debug, phần mở rộng này cho phép tạo ra Client lắng nghe trên cổng do bạn ấn định để xDebug kết nối vào.

Khi mở dự án PHP của bạn xong, chọn biểu tượng Debug (hình con bọ), sau đó chọn biểu tượng bánh xe, chọn Add Config PHP cấu hình như hình dưới:

Sau khi chọn xong, nó sẽ tạo ra file launch.json, bạn sửa đổi file này nội dung như sau:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "hostname": "localhost"

        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
        }
    ]
}

Lúc này, bạn có thể đặt breakpoint, hoặc gỡ rối nếu phát sinh ngoại lệ. Bạn bấm vào nút mũi tên xanh (play) để bắt đầu tạo client phiên làm việc, lắng nghe Xdebug kết nối tới ở cống 9000 của localhost, nó xuất hiện như hình dưới.

Giả sử đặt breakpoint vào file test.php, khi chạy file này từ trình duyệt hoặc CLI, lập tức XDebug hoạt động.

Bạn đã bắt đầu có thể thực hiện các thao tác debug (step over, step into ...), trong quá trình này bạn sẽ giám sát được giá trị các biến, call stack ...

Thực hiện Debug với PHPStorm

Nếu phát triển dự án PHP với PHPStorm thì cấu hình để nó kết nối với Xdebug như sau: Mở hộp thoại Preferences, Settings tìm đến mục Xdebug và nhập các thông tin như sau:

Khi cấu hình xong, muốn bắt đầu một phiên debug thì bấm vào biểu tượng điện thoại (Start Listening for PHP Debug ...), sau đó có thể đặt breakpoint, phát sinh ngoại lệ ... để Debug. Khi chạy code nếu phát sinh ngoại lệ, hoặc đến breakpoint chương trình sẽ tạp dừng và xuất hiện khu vực Debug trong PHPStorm

Sử dụng Xdebug trong PHP Container Docker

Trong phần này thực hiện trên PHP Container với cấu trúc và thư mục chia sẻ code ... đúng như hướng dẫn tại Cài đặt PHP FPM - tuy nhiên có thêm ánh xạ cổng XDebug 9001 (thêm tham số -p 9001:9001 khi chạy container này)(chọn 9001 vì cổng 9000 có thể PHP FPM đang chiếm), đồng thời cũng có Container Apache cài đặt giống như Cài đặt và cấu hình Apache Container

Theo như cấu trúc trên thì dự án PHP code lưu ở máy host tại thư mục /mycode/php tương ứng trong các container là đường dẫn /home/phpcode, bạn nhớ cấu trúc này vì cần trong thiết lập XDebug PHP

Cài đặt XDebug vào PHP Container

Container PHP đang chạy có đặt tên là c-php, khi nó đang chạy hãy vào terminal của container bằng lệnh:

docker exec -it c-php bash

Sau đó gõ lần lượt các lệnh sau để cài đặt XDebug

apt-get update
apt-get upgrade -y
apt-get install -y --force-yes curl git nano zlib1g-dev
apt-get install libzip-dev
docker-php-ext-install zip
docker-php-ext-enable zip
pecl install xdebug
docker-php-ext-enable xdebug

Sau khi cài đặt xong, gõ lệnh php -v, nếu hiện thị có dòng with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans thì đã cài đặt thành công extension này vào PHP

Cấu hình để XDebug cho phép Remote Debug

Bạn mở file /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini trong container c-php thêm vào các cấu hình sau:

xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_autostart=1
xdebug.remote_port=9001
xdebug.profiler_enable=0
xdebug.var_display_max_depth = 5
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
xdebug.profiler_enable=0
xdebug.remote_log = /xdebug.log
xdebug.idekey = docker
xdebug.remote_host=192.168.1.5

Sau khi thêm vào khởi động lại container, mọi tình trạng hoạt động được ghi ra log tại /xdebug.log, địa chỉ 192.168.1.5 là IP máy host, hãy thay bằng IP máy host của bạn. Khởi động lại container khi đã cấu hình xong.

Trên macOS, Linux có thể gõ ifconfig | grep "inet " | grep -v 127.0.0.1 để xem địa chỉa IP của máy HOST. Trên Windows gõ ipconfig

Thiết lập Visual Studio Code để Debug với PHP Container

Chỉ việc sửa đổi file launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9001,
            "hostname": "192.168.1.5",
            "pathMappings": {
                "/home/phpcode": "/mycode/php"
            }

        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9001,
        }
    ]
}

Hãy chú ý mục pathMappings, hostname, port. Đến đây thì có thể Debug PHP Docker giống như PHP trực tiếp ở trên. Tương tự dành cho PHPStorm, chỉ việc thay cổng 900 thành 9001

Tải thêm tài liệu liên quan đến bài viết Hướng dẫn dùng myphpinfo trong PHP