Tất cả bắt đầu khi tôi muốn cài đặt phpmyadmin trong máy chủ Apache2 trên Raspbian, với PHP7.3. Và tôi đã gặp lỗi sau khi tôi đến "localhost/phpmyadmin
":phpmyadmin in an apache2 server on Raspbian, with php7.3. And I got the following error when I went to "localhost/phpmyadmin
":
Fatal error: Uncaught Error: Call to undefined function PhpMyAdmin\mb_strpos[] in /usr/share/phpmyadmin/libraries/classes/Url.php:257 Stack trace:
#0 /usr/share/phpmyadmin/libraries/classes/Url.php[208]: PhpMyAdmin\Url::getArgSeparator[]
#1 /usr/share/phpmyadmin/libraries/classes/Url.php[171]: PhpMyAdmin\Url::getCommonRaw[Array, '?']
#2 /usr/share/phpmyadmin/libraries/classes/Core.php[765]: PhpMyAdmin\Url::getCommon[Array]
#3 /usr/share/phpmyadmin/libraries/classes/Core.php[338]: PhpMyAdmin\Core::linkURL['//secure....']
#4 /usr/share/phpmyadmin/libraries/classes/Core.php[367]: PhpMyAdmin\Core::getPHPDocLink['book.mbstring.p...']
#5 /usr/share/phpmyadmin/libraries/classes/Core.php[995]: PhpMyAdmin\Core::warnMissingExtension['mbstring']
#6 /usr/share/phpmyadmin/libraries/common.inc.php[110]: PhpMyAdmin\Core::checkExtensions[]
#7 /usr/share/phpmyadmin/index.php[23]: require_once['/usr/share/phpm...']
#8 {main} thrown in /usr/share/phpmyadmin/libraries/classes/Url.php on line 257
Sau đó, tôi đã cài đặt MBString thông qua: apt install php7.3-mbstring
.mbstring through: apt install php7.3-mbstring
.
Nhưng khi tôi gõ "a2enmod php-mbstring
" hoặc "phpenmod php-mbstring
", tôi sẽ nhận được điều này trên bảng điều khiển: WARNING: Module php7.3-mbstring ini file doesn't exist under /etc/php/7.3/mods-available
, tuy nhiên nếu tôi làm
root@raspberrypi:/etc/php/7.3/mods-available# ls
calendar.ini fileinfo.ini iconv.ini opcache.ini posix.ini sockets.ini sysvshm.ini
ctype.ini ftp.ini json.ini pdo.ini readline.ini sysvmsg.ini tokenizer.ini
exif.ini gettext.ini mbstring.ini phar.ini shmop.ini sysvsem.ini
0 trong thư mục đó, tôi sẽ nhận được điều này [mbstring.ini ở bên trong nó]:root@raspberrypi:/etc/php/7.3/mods-available# ls
calendar.ini fileinfo.ini iconv.ini opcache.ini posix.ini sockets.ini sysvshm.ini
ctype.ini ftp.ini json.ini pdo.ini readline.ini sysvmsg.ini tokenizer.ini
exif.ini gettext.ini mbstring.ini phar.ini shmop.ini sysvsem.ini
UPDATE::
Tôi vừa viết: "
root@raspberrypi:/etc/php/7.3/mods-available# ls
calendar.ini fileinfo.ini iconv.ini opcache.ini posix.ini sockets.ini sysvshm.ini
ctype.ini ftp.ini json.ini pdo.ini readline.ini sysvmsg.ini tokenizer.ini
exif.ini gettext.ini mbstring.ini phar.ini shmop.ini sysvsem.ini
1" và giải quyết lỗi.Tôi nhận được thông tin từ liên kết Cherrydt đã gửi cho tôi.
Tôi sử dụng môi trường máy chủ tối thiểu của Ubuntu16.04.1, Apache2, MySQL và Php 7.0.8.1. Tôi đã cài đặt amp thông qua:
root@raspberrypi:/etc/php/7.3/mods-available# ls
calendar.ini fileinfo.ini iconv.ini opcache.ini posix.ini sockets.ini sysvshm.ini
ctype.ini ftp.ini json.ini pdo.ini readline.ini sysvmsg.ini tokenizer.ini
exif.ini gettext.ini mbstring.ini phar.ini shmop.ini sysvsem.ini
2.Tôi cũng đã cài đặt phpmyadmin theo cách thủ công thông qua:
cd /var/www/html
wget //files.phpmyadmin.net/phpMyAdmin/4.6.5.2/phpMyAdmin-4.6.5.2-all-languages.zip
find ./ -type f -name '*phpMyAdmin*.zip' -exec unzip {} \; # We can also do unzip \*phpMyAdmin*.zip ...
find ./ -type d -name 'phpMyAdmin-*' -exec mv {} phpmyadmin \;
PHPMyAdmin được bootstrapping nhưng để sử dụng nó đầy đủ về mặt chức năng, afaik i aslo cần phải làm:
phpenmod mcrypt
phpenmod mbstring
Tuy nhiên, những lỗi tương ứng này:
Module mcrypt ini file doesn't exist under /etc/php/7.0/mods-available
Module mbstring ini file doesn't exist under /etc/php/7.0/mods-available
Tôi chưa bao giờ có những lỗi này trước đây. Các mô -đun này có dư thừa cho phpmyadmin trong các bản phát hành hiện tại hay khi không được cài đặt qua
root@raspberrypi:/etc/php/7.3/mods-available# ls
calendar.ini fileinfo.ini iconv.ini opcache.ini posix.ini sockets.ini sysvshm.ini
ctype.ini ftp.ini json.ini pdo.ini readline.ini sysvmsg.ini tokenizer.ini
exif.ini gettext.ini mbstring.ini phar.ini shmop.ini sysvsem.ini
3? Cần phải bật PHP với hỗ trợ MBString [Chuỗi đa byte] để lưu trữ và hiển thị các ký tự đa byte trong phần mềm PHPKB. Trình hướng dẫn cài đặt của các phiên bản đa ngôn ngữ của phần mềm cơ sở kiến thức PHPKB sẽ tự động phát hiện nếu bạn đã bật PHP với hỗ trợ MBString. Nếu nó không được bật, bạn có thể gặp lỗi cho biết:PHPKB knowledge base software will automatically detect if you have PHP enabled with mbstring support. If it is not enabled, you may get an error that says:
Gọi đến hàm không xác định mb_convert_encoding []mb_convert_encoding[]
Vui lòng tham khảo hướng dẫn bên dưới về cách bật MBString trên máy chủ của bạn.
Tại sao MBString là bắt buộc?
Khi chúng ta thao tác [cắt, tách, nối, v.v.] được mã hóa trong mã hóa đa byte, chúng ta cần sử dụng các hàm đặc biệt vì hai hoặc nhiều byte liên tiếp có thể đại diện cho một ký tự duy nhất trong các sơ đồ mã hóa đó. Mặt khác, nếu chúng ta áp dụng chức năng chuỗi không nhận biết không phải là Multibyte cho chuỗi, có lẽ nó không phát hiện được sự bắt đầu hoặc kết thúc của ký tự đa dạng và kết thúc bằng một chuỗi rác bị hỏng mà rất có thể sẽ mất ý nghĩa ban đầu của nó.
Vì vậy, MBString cung cấp các chức năng chuỗi đặc trưng cho đa năng giúp chúng tôi đối phó với mã hóa đa cấp trong PHP. Ngoài ra, MBString xử lý chuyển đổi mã hóa ký tự giữa các cặp mã hóa có thể. MBString được thiết kế để xử lý các mã hóa dựa trên Unicode như UTF-8 và UCS-2 và nhiều mã hóa đơn byte để thuận tiện.
Cài đặt MBString
Xin lưu ý rằng "MBString" là tiện ích mở rộng PHP không mặc định. Điều này có nghĩa là nó không được bật theo mặc định.mbstring" is a non-default PHP extension. This means it is not enabled by default.
Cài đặt trên máy chủ Linux
Bạn có thể tìm hiểu xem mô -đun này có được cài đặt hay không bằng cách xem danh sách được tạo bởi lệnh này
Nếu bạn không có cài đặt này trên máy Linux và nếu bạn đã cài đặt PHP từ YUM thì hãy chạy lệnh này như một siêu người dùng. Lệnh & nbsp; phụ thuộc vào hệ điều hành của bạn.
Sudo yum Cài đặt PHP-MBSTRING Lệnh này là đúng đối với tất cả các phân phối dựa trên Linux của Red Hat bằng RPM và Trình quản lý gói của Yum Yum; Điều này bao gồm Rhel, Fedora, Centos, Mandriva và Linux nội tại, trong số những người khác. Đối với Debian, các bản phân phối Ubuntu, vui lòng sử dụng lệnh sau.sudo apt-get cài đặt php-mbstring
This command is true for all Red Hat Linux-based distributions using RPM and the ’yum’ package manager; this includes RHEL, Fedora, CentOS, Mandriva, and Intrinsic Linux, among others.
For Debian, Ubuntu distributions, please use the following command.
sudo apt-get install php-mbstring
Sau đó, bạn sẽ cần khởi động lại dịch vụ Apache của mình bằng lệnh sau:
Cài đặt trên Windows Server
Nếu bạn có quyền truy cập vào php.ini, chỉ cần xóa ký tự dấu chấm phẩy [;] ở phía trước dòng bên dưới.
Tiện ích mở rộng = php_mbstring.dll
Khi bạn đã thực hiện các thay đổi, đừng quên khởi động lại máy chủ web của mình để thay đổi có hiệu lực.
Lưu ý: Phần mở rộng PHP không chỉ được bật từ tệp php.ini. Đầu tiên, bạn cần cài đặt tiện ích mở rộng cụ thể đó, tức là đặt tệp DLL của nó "php-mbstring.dll" vào thư mục "/php/ext/" nếu nó chưa có mặt ở đó. Khi bạn làm điều đó, hãy chắc chắn rằng bạn có bản dựng chính xác của tệp DLL. Ví dụ, nhị phân PHP an toàn 32 bit, được xây dựng bằng VC9, sẽ chỉ hoạt động với các tệp DLL được xây dựng bằng cách sử dụng chính xác các công cụ và cấu hình: 32 bit, sử dụng VC9, với an toàn được bật. Và tất nhiên phiên bản API PHP cũng cần phải phù hợp. Nếu không, một khi bạn khởi động lại máy chủ web, bạn sẽ nhận được thông báo 'Lỗi 500 - Máy chủ'.: PHP extensions are not just enabled from php.ini file. First, you need to install that specific extension, i.e. place its DLL file "php-mbstring.dll" into the "/php/ext/" directory if it is not already present there. When you do that, make sure you have the correct build of DLL file. 32-bit, thread-safe PHP binary, built using VC9 for example, would only work with DLL files built using exact same tools and configuration: 32-bit, using VC9, with thread-safety turned on. And of course PHP API version also needs to match. If it doesn't, once you restart the web server, you will receive 'Error 500 - Server error' message.
Cấu hình MBString
Dưới đây là một đoạn trích mẫu từ tệp php.ini chứa cấu hình của các biến MBString.php.ini file which contains the configuration of mbstring variables.
. mbstring.func_overload = 0 mbString.strict_encoding = TẮT
mbstring.language = all
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = UTF-8
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_encoding = Off