Mã PHP không được thực thi, thay vào đó mã hiển thị trên trang


320

Tôi đang cố gắng thực thi một số mã PHP trên một dự án (sử dụng Dreamweaver) nhưng mã không được chạy.

Khi tôi kiểm tra mã nguồn, mã PHP xuất hiện dưới dạng thẻ HTML (tôi có thể thấy mã đó trong mã nguồn). Apache đang chạy đúng (tôi đang làm việc với XAMPP), các trang PHP đang được mở đúng nhưng mã PHP không được thực thi.

Có ai có một đề nghị về những gì đang xảy ra?

Lưu ý: Tệp đã được đặt tên làfilename.php

Chỉnh sửa: Mã ..:

<?
include_once("/code/configs.php");
?>

Bản in


44
Bạn đang sử dụng các thẻ ngắn <?thay vì <?php?
Dan Grossman

28
Đừng bao giờ sử dụng các thẻ ngắn. ( <?). Họ không được tán thành, không thực sự làm việc ở nhiều nơi và hoàn toàn không cần thiết. Lưu ba tổ hợp phím không phải là lý do hợp lệ để cho phép tiềm năng mã của bạn bị lỗi trên một nửa số máy chủ mà nó có thể chạy.
mopsyd 11/2/2015

10
@mopsyd Trường hợp nào nói rằng các thẻ ngắn không được dùng nữa? Xin lưu ý rằng các thẻ ngắn không giống như các thẻ echo ngắncác thẻ echo ngắn đã được hỗ trợ theo mặc định kể từ PHP 5.4, bất kể short_open_tagcài đặt.
Kyle Anderson

5
Tôi biết rằng các thẻ ngắn không phải là thẻ echo ngắn, đó là lý do tại sao tôi đã chỉ định điều mà tôi đã nói trong phần bình luận. Tại thời điểm viết, các thẻ ngắn được gắn cờ không dùng cho bản phát hành php 6, mặc dù điều đó rõ ràng đã thay đổi kể từ đó. Vấn đề vẫn còn tồn tại là rất nhiều máy chủ đã bị vô hiệu hóa, điều này làm cho mã của bạn ít bị di động hơn đáng kể. Điều này không áp dụng cho các thẻ echo ngắn ( <?=), sẽ chạy tốt trên php 5.4+ bất kể cài đặt máy chủ.
mopsyd

3
nói ngớ ngẩn về các thẻ ngắn. Thẻ dài hút và chúng xấu. Tôi chưa bao giờ gặp vấn đề trong 10 năm lập trình php. Chúng hầu như không bao giờ là vấn đề
Danial

Câu trả lời:


418

Âm thanh như có gì đó không đúng với cấu hình của bạn, đây là một vài điều bạn có thể kiểm tra:

  1. Hãy chắc chắn rằng PHP được cài đặt và chạy chính xác. Điều này nghe có vẻ ngớ ngẩn, nhưng bạn không bao giờ biết. Một cách dễ dàng để kiểm tra là chạy php -vtừ một dòng lệnh và xem nếu trả về thông tin phiên bản hoặc bất kỳ lỗi nào.

  2. Hãy chắc chắn rằng mô-đun PHP được liệt kê và không bị thiếu trong httpd.conf của Apache. Đây sẽ là một cái gì đó giống như LoadModule php5_module "c:/php/php5apache2_2.dll"trong tệp. Tìm kiếm LoadModule phpvà đảm bảo rằng không có nhận xét ( ;) nào trước nó.

  3. Đảm bảo rằng tệp httpd.conf của Apache có loại MIME PHP trong đó. Đây sẽ là một cái gì đó như AddType application/x-httpd-php .php. Điều này bảo Apache chạy .phpcác tệp dưới dạng PHP. Tìm kiếm AddType và sau đó đảm bảo có một mục cho PHP, và nó không bị thiếu .

  4. Hãy chắc chắn rằng tập tin của bạn có .php phần mở rộng trên đó, hoặc bất kỳ phần mở rộng nào được chỉ định trong định nghĩa MIME ở điểm # 3, nếu không nó sẽ không được thực thi như PHP.

  5. Hãy chắc chắn rằng bạn không sử dụng các thẻ ngắn trong tệp PHP ( <?), những thẻ này không được bật trên tất cả các máy chủ theo mặc định và việc sử dụng chúng không được khuyến khích. Sử dụng <?phpthay thế (hoặc bật các thẻ ngắn trong php.ini của bạn vớishort_open_tag=On nếu bạn có mã mà dựa vào chúng).

  6. Đảm bảo rằng bạn đang truy cập tệp của mình qua máy chủ web bằng URL như http://localhost/file.phpkhông thông qua truy cập tệp cục bộfile://localhost/www/file.php

Và cuối cùng kiểm tra hướng dẫn PHP để biết thêm các mẹo thiết lập .


14
Không biết tại sao, nhưng trình cài đặt PHP 5.3.15 không thêm dòng AddType application/x-httpd-php .php. Cảm ơn rất nhiều!!
MatuDuke

7
@shmeeps: Bạn đã thấy các thẻ ngắn bị phản đối ở đâu? Tôi đã thực hiện một số tìm kiếm và chỉ có thể tìm thấy các đề xuất chống lại họ, không có gì về sự phản đối. Được cấp cho các ứng dụng được phân phối, tốt hơn là sử dụng <? Php trong trường hợp máy chủ lưu trữ không bật chúng, nhưng đối với các ứng dụng mà bạn có toàn quyền kiểm soát máy chủ thì chúng sẽ hoạt động. xem bất kỳ lý do không sử dụng chúng.
ClarkeyBoy

3
điểm số 6 làm việc cho tôi .. truy cập cục bộ không sử dụng máy chủ apache
KawaiKx

6
điểm 2 làm việc cho tôi một cách an toàn -apt-get purge apache2; apt-get install apache2 libapache-mod-php5
ulkas

1
@full_prog_full Hãy thử tải lên một tệp có .phpphần mở rộng với nội dung <?php echo("Success"); ?>và xem nếu truy cập tệp qua trình duyệt web dẫn đến "Thành công" được hiển thị mà không có mã PHP liên quan.
shmeeps

61

php7:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

24
Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm giải thích về cách thứclý do tại sao điều này giải quyết vấn đề sẽ thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ là người hỏi bây giờ! Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những hạn chế và giả định được áp dụng.
Toby Speight

4
Câu trả lời này liên quan đến linux, chủ đề thông minh rõ ràng đang sử dụng windows.
Raymond Nijland

3
@RaymondNijland đúng nhưng đây là kinh điển và tôi đã tìm thấy câu hỏi này và nó đã cứu tôi sau hơn một giờ khắc phục sự cố.
Ngỗng

Làm thế nào và tại sao: Điều này xảy ra khi PHP7 không cấu hình dịch vụ CGI nhanh mặc định trong tập lệnh tạo. sudo a2enmod proxy_fcgi setenviftạo ba mod mới /mods-available/proxy.conf proxy_fcgi.load proxy.loadTương tự như vậy, sudo a2enconf php7.0-fpmtạo một tệp cấu hình /conf-available/php7.0-fpm.confMột khi điều này được thực hiện và Apache2 có thể chạy mô-đun PHP7 như một dịch vụ CGI nhanh.
Talvi Watia

33

Tôi đang chạy Apache trên Ubuntu và vấn đề của tôi là /etc/apache2/mods-available/php5.conftệp bị thiếu điều này:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

Tôi đã thêm nó trở lại và php đã phân tích chính xác các tập tin php.


31

lưu ý cho người dùng php 7, thêm phần này vào tệp httpd.conf của bạn:

# PHP 7 specific configuration
<IfModule php7_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

4
Chỉ để giúp đỡ người khác với vấn đề này. Các httpd.conftập tin được đặt tại /etc/apache2/httpd.confNếu bạn đang sử dụng Ubuntu, nó sẽ là apache2.conftrong cùng thư mục mà cần phải được sửa đổi cho PHP7.
Ahmed Sagarwala

23

Tôi tìm thấy một vấn đề khác gây ra vấn đề này và đã giải quyết nó. Tôi vô tình lưu tập lệnh của tôi trong UTF-16mã hóa. Dường như PHP5 không thể nhận ra <?phpthẻ ở dạng mã hóa 16 bit theo mặc định.


18

Tôi đang đăng câu trả lời này vì giao diện quản trị Virtualmin / Webmin của tôi đã quyết định nên tắt công cụ PHP của tôi .. tôi mất một lúc để tìm giải pháp, vì vậy tôi nghĩ tôi muốn chia sẻ nó với các bạn:

Ngoài ra, hãy chắc chắn kiểm tra xem không có tệp cấu hình trang web nào của bạn liên quan đến máy chủ hoặc virtualhost cụ thể này có bất kỳ php_admin_value nào trong đó tắt PHP, như thế này:

php_admin_value engine Off

Khi nghi ngờ, hãy bình luận ...

# php_admin_value engine Off

Và khởi động lại máy chủ web của bạn.


1
Những cài đặt cấu hình chính xác ở đâu?
cronoklee

2
@cronoklee Trong cài đặt vhost của httpd.conf. Đối với các máy chủ hiện có, bạn cần chỉnh sửa cấu hình apache trong webmin. Đối với các máy chủ trong tương lai, hãy truy cập virtualmin> mẫu máy chủ> trang web apache. Dù sao, điều này không an toàn như fastcgi - mặc định của virtualmin. Vì vậy, cách tiếp cận đúng phải là khắc phục sự cố tại sao fcgi không hoạt động, ví dụ có thể do quyền của tệp.
Cừu

Nếu bạn đang sử dụng phiên bản Apache không có httpd.conf, hãy tìm trong /etc/apache2/mods-enabled/php7.confhoặcphp5.conf
Sam Malayek

Khi nghi ngờ về vị trí của một cài đặt cấu hình nhất định, bạn luôn có thể sử dụng grep để tìm những gì bạn đang tìm kiếm (ví dụ trong trường hợp này) gõ:sudo grep php_admin_value /etc/* -R
Henry van Megen

17

Bạn chỉ cần mở tệp php của bạn vào trình duyệt. Bạn phải mở nó bằng url localhost. nếu bạn mở một tệp trực tiếp từ thư mục của bạn, nó sẽ không thực thi mã php trong mọi trường hợp.

sử dụng: http://locahost/index.phphoặchttp:127.0.0.1/index.php

Kích hoạt mã ngắn php. Trong trường hợp của bạn, bạn đang sử dụng <?mã ngắn php cho<?php . Theo mặc định, mã ngắn php bị vô hiệu hóa.

Cũng sử dụng: sudo apt-get install php5 libapache2-mod-php5 php5-mcryptnếu bạn là người dùng Ubuntu.


1
Tại sao mcrypt được yêu cầu khi tôi chỉ bao gồm một tệp? Bạn nên lưu ý rằng câu hỏi này đã cũ và vấn đề thẻ ngắn đã được đề cập 16 lần, cũng nằm trong phần bình luận hàng đầu của câu hỏi của tôi.
Gui

1
Tôi chỉ chia sẻ giải pháp của mình, tôi cũng gặp phải lỗi tương tự và sau khi thực hiện lệnh mcrypt này, vấn đề của tôi đã được giải quyết. bạn cũng có thể thử.
Hasan Baig

theo mặc định mã ngắn php được kích hoạt. short_open_tag = On (Giá trị mặc định = ON) trong php 5.6
zond

Đây là vấn đề của tôi, cấu hình virtualmin / apache của tôi là cho 127.0.0.2 nhưng tôi đã đặt địa chỉ IP bên ngoài của mình vào trình duyệt, tôi vừa cập nhật cấu hình v / a của mình và bây giờ nó hoạt động
Hayden Thring

Tôi chỉ thiếu libapache2-mod-php7.3.
dxvargas

8

Tôi biết nó nghe có vẻ ngớ ngẩn ... nhưng hiếm khi nó xảy ra.

Kiểm tra nếu bạn đang cố gắng thực thi php từ

**http://localhost/info.php**

và không phải từ

file:///var/www/info.php

ps> bạn có thể nhận thấy rằng nếu bạn viết từ shell

php info.php 

nó trả lời bằng mã (nó có nghĩa là các hàm php) ..


PHP hoạt động tốt (được kiểm tra bằng dòng lệnh). nhưng, khi tôi truy cập tệp bằng URL, nó sẽ hiển thị mã PHP.
muaaz

8

Điều này chỉ xảy ra với tôi một lần nữa, cùng với việc máy chủ tải xuống các tệp html, thay vì xử lý. Tôi đã không sử dụng apache máy chủ web một thời gian trên máy tính và trong khi đó Ubuntu cập nhật như hai phiên bản khác từ LTS được cài đặt ban đầu. Bây giờ thì đúng là vậy

$ cat /etc/issue
Ubuntu 16.04 LTS

Vì vậy, php đã làm việc sau khi như vậy:

$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart 

Các máy chủ web hiện đang phân tích cú pháp php. Có lẽ bây giờ phải cập nhật một số web vì php7.0 hiện đang chạy như trước khi chạy php5. Ồ tốt


5

Tôi đã giải quyết vấn đề này bằng cách gỡ cài đặt XAMPP và cài đặt WAMP. Cảm ơn đã giúp đỡ.


Tôi là xampp nhưng nó hoạt động tốt. bạn có tìm thấy lý do tại sao nó hiển thị mã php @Gui
Pie

5

Tôi đã gặp vấn đề này trên php 7.1 đi kèm với High Sierra (OS X 10.13.5), chỉnh sửa /etc/apache2/httpd.confvới các thay đổi sau đây đã giúp:

  1. Bỏ dòng này

    LoadModule php7_module libexec/apache2/libphp7.so
  2. Dán sau ở cuối

    <IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>

Giống như bạn có thể xin vui lòng đề nghị Wamp 3 phiên bản lỗi tương tự. Không có đường dẫn thư mục /etc/apache2/httpd.conf trong wamp 3. @AamirR
Gem

Điều này làm việc cho tôi !!! Của tôi là một vấn đề kỳ lạ hơn. Một số tệp kết xuất PHP và các tệp khác thì không và chỉ hiển thị mã.
sjw0525

4

trên phiên bản Ubuntu 14.04, apache 2.4, cài đặt php 5.5.9 của tôi, tôi đã thử với sample.php trên / var / www / html (root tài liệu mặc định) và nó hoạt động tốt. Vì vậy, vấn đề là trên cấu hình Máy chủ ảo của tôi. Giải pháp là bao gồm, trên thư mục def chứa .php, dòng này:

    php_admin_flag engine on

và tôi nên thêm dòng này vào tệp Apache trong httpd.conf của máy chủ ảo của mình ở đâu? và tôi đang sử dụng Webmin
suresh pareek

4

Đảm bảo tập lệnh chứa

<?php

trước khi mã cần được thực thi. Không nên có khoảng trống giữa <?phptrong này.


3

tôi đã có vấn đề tương tự nhưng trong trường hợp của tôi giải pháp là khác nhau. tệp của tôi chứa mã php được gọi là "somename.html" đã đổi nó thành "somename.php" hoạt động tốt


Điều này cũng giải quyết nó cho tôi. Có ai biết nếu sever sẽ thực thi php trong tệp .html không hoặc tệp kết thúc luôn phải được đổi thành .php khi có một dòng php được thực thi?
full_prog_full

phụ thuộc vào cài đặt máy chủ, đối với hầu hết các trường hợp mã php tồn tại trong anyfile.html sẽ thực thi. và nếu không, nó có thể được thay đổi, mặc dù idk như thế nào: P
Netrus 4/12/2016

3

Để thiết lập LAMP mới chạy php 7, hãy chỉnh sửa tệp /etc/httpd/conf/httpd.conf Lưu ý: đảm bảo tạo bản sao lưu cho nó trước khi thay đổi bất cứ điều gì.

Dán cái này ở dưới cùng của tập tin:

<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Sau đó, tìm kiếm LoadModule và dán dòng sau:

LoadModule php7_module modules/libphp7.so

Dòng này sẽ chỉ yêu cầu httpd tải mô-đun php 7

Sau đó khởi động lại httpd


3

Kiểm tra tất cả các gói bạn đã cài đặt cho php bằng cách sử dụng:

yum list installed | grep remi

Cài đặt tất cả các gói php có liên quan , đặc biệt là php-devel trên máy của bạn.


2

Đây là trong .htaccess của tôi

DirectoryIndex index.html index.htm

index.html chứa mã PHP. Theo mặc định, PHP sẽ không xử lý các tệp có phạm vi như htm * dưới dạng mã PHP.

Bạn có thể ghi đè lên điều này, bằng cách thêm dòng sau vào .htaccess:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

1

Tôi nghĩ rằng vấn đề là nó đang hiển thị mã thay vì kết quả là nó sẽ không đến máy chủ cục bộ. kiểm tra lại địa chỉ bạn đang đi vào. Bạn đang đi đến một thư mục tệp cục bộ hoặc đến máy chủ lưu trữ cục bộ.

từ ảnh chụp màn hình bạn đã gửi nó sẽ đến máy tính của bạn chứ không phải vào localhost.

"tệp: ///" phải là "localhost /"


1

Cài đặt lại các mcryptmô-đun làm việc cho tôi.

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt

Nó thành thật đã làm, có lẽ vì tôi đã không cấu hình PHP đúng trên hệ thống của mình. Nhưng, vì câu hỏi tôi hỏi về vấn đề tương tự đã được đánh dấu là trùng lặp với câu hỏi này, tôi chỉ có thể trả lời nó ở đây. Tôi tự hỏi tại sao bỏ phiếu xuống.
bg

Câu trả lời này liên quan đến linux, chủ đề thông minh rõ ràng đang sử dụng windows
Raymond Nijland

1

Tôi đã có một trường hợp mà tôi vô tình bắt đầu gỡ bỏ thư mục tập tin của tôi trong root. Nó đã thêm tệp .htaccess từ thư mục tệp của tôi sẽ chặn tất cả php

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

Dòng dưới cùng kiểm tra tệp .htaccess trên root.


1

Nếu bạn có cấu hình như thế này:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/example.com"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

Bỏ ghi chú dòng tiếp theo trong httpd.conf của bạn

LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

Nó làm việc cho tôi


1

Thêm vào AddType application/x-httpd-php .phptệp httpd.conf của bạn nếu bạn đang sử dụng Apache 2.4


1

Chỉ mất hàng giờ để cố gắng để PHP 5 chạy với Apache 2.4 trên Windows 10 . Cuối cùng, đối với tôi, đó là một lỗi đánh máy trong httpd.conf LoadModule . Đã thu hút sự chú ý vào văn bản và đường dẫn mô-đun chính xác thông qua câu trả lời cuối cùng trong chuỗi apachelounge này của denny2018 . Cảm ơn bạn!

Sau hai đêm tôi phát hiện ra ... Thư mục của tôi đã được viết c:(chữ thường)

Tôi đã có LoadModule php5_module "c:/php/php5apache2.dll"nhưng chính xác cho apache 2.4 là:

LoadModule php5_module "C:/php/php5apache2_4.dll"

Vì vậy, tôi cũng đã bỏ lỡ _4trước (cho apache 2.4 ). Đoạn trích đầy đủ làm việc cho tôi:

# PHP
LoadModule php5_module "C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Chỉ cần thử PHP 7 . Có LoadModuledòng trong httpd.conf cho Apache 2.4 đọc

LoadModule php7_module "C:/php/php7apache2_4.dll"

Hiện tại hướng dẫn sử dụng php cho thấy c:/php/php5apache2.dll tất nhiên cần phải điều chỉnh.


1

trong trường hợp của tôi (Apache / 2.4.34),

sau khi bỏ ghi chú mô-đun cụ thể

"LoadModule php7_module libexec / apache2 / libphp7.so"

từ

"/etc/apache2/httpd.conf"

vấn đề của tôi đã biến mất


1

Trong trường hợp chúng ta ở cùng một trang, hãy làm theo

sudo apt-get install php -y sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y

Để kích hoạt PHP 7.2 FPM trong Apache2, hãy làm:

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

cập nhật 2: Apache tải xuống tệp .php thay vì kết xuất

Sau đó, tôi phải đối mặt với vấn đề trên. Có những câu hỏi tương tự như thế này .

Tôi không biết tại sao nhưng nó chỉ xảy ra với các tệp .php của tôi trong /var/www/html/thư mục gốc. mọi thứ đều ổn cho các thư mục con (ví dụ wordpress và phpmyadmin hoạt động tốt)

Vì vậy, đây là giải pháp của tôi. Tôi quyết định kích hoạt mô-đun php. Vì vậy, tôi đã chạy lệnh này:

a2enmod php7.2

nhưng tôi đã nhận được lỗi này:

Xem xét sự phụ thuộc mpm_prefork cho php7.2: Xem xét xung đột mpm_event cho mpm_prefork: ERROR: Mô-đun mpm_event được bật - không thể tiến hành do xung đột. Nó cần phải được vô hiệu hóa đầu tiên! Xem xét xung đột mpm_worker cho mpm_prefork: ERROR: Không thể kích hoạt phụ thuộc mpm_prefork cho php7.2, hủy bỏ

Vì vậy, tôi quyết định vô hiệu hóa mpm bằng cách chạy các lệnh sau:

sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event

sau đó khởi động lại apache:

systemctl restart apache2

sau đó kích hoạt php7.2 (phiên bản đã cài đặt của tôi):

sudo a2enmod php7.2

và ngay bây giờ mọi thứ hoạt động tốt.


0

Một nguyên nhân có thể khác của vấn đề này có thể là do bạn đang cố chạy tập lệnh trong "thư mục người dùng" từ UserDirmô-đun. Chạy các kịch bản PHP trong thư mục người dùng bị tắt theo mặc định. Bạn sẽ gặp vấn đề này nếu tập lệnh nằm trong public_htmlthư mục trong thư mục nhà của bạn và bạn đang cố gắng truy cập nó từhttp://localhost/~your_username .

Để khắc phục điều này, hãy mở ra /etc/apache2/mods-enabled/php7.2.conf. Bạn phải bình luận hoặc xóa khối thẻ ở phía dưới đọc

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

-1

tệp mà bạn đặt trong / var / www / html / nên có .php forexample example.php nếu đó là ví dụ thì nó không hoạt động nhưng nếu bạn thay đổi nó thành example.php thì nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.