Có lệnh nào để bật / tắt tiện ích mở rộng php dễ dàng từ dòng lệnh không? (php.ini)
extension=x.so
để vô hiệu hóa x.
Có lệnh nào để bật / tắt tiện ích mở rộng php dễ dàng từ dòng lệnh không? (php.ini)
extension=x.so
để vô hiệu hóa x.
Câu trả lời:
Nếu bạn đang sử dụng PHP5.4 + trên distro dựa trên Debian, bạn có thể sử dụng php5enmod để bật và php5dismod để tắt các phần mở rộng PHP.
Bạn có thể kích hoạt một phần mở rộng từ dòng lệnh bằng cách sử dụng:
php -d extension=/path/to/extension.so
-d
được sử dụng để truyền các giá trị ini thông qua dòng lệnh. Thật không may, không có cách nào để vô hiệu hóa một phần mở rộng trên dòng lệnh nếu nó đã được cấu hình trong php.ini
tệp. (Tất nhiên bạn có thể làm theo các câu trả lời khác nhưng bạn không thể làm gì bằng cách sử dụng -d
hoặc bất kỳ tùy chọn nào của php
lệnh.)
Tôi cần trên Lubfox pdo_sqlite
.
Kích hoạt thủ công:
$ sudo php5enmod pdo_sqlite
Nếu không làm việc, hãy kiểm tra:
$ ls /etc/php5/mods-available
Danh sách kết quả bị thiếu pdo_sqlite.ini
. Chúng tôi phải cài đặt nó.
$ sudo apt-get install php5-sqlite
Hoặc cho php7:
$ sudo apt-get install php7-sqlite3
Tiện ích mở rộng sqlite3
được bật tự động trong CLI và trong Apache trong quá trình cài đặt và bây giờ chúng tôi có mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Vô hiệu hóa tiện ích mở rộng với:
$ sudo php5dismod pdo_sqlite
Bạn có thể chỉ định -n
để tránh mọi tiện ích mở rộng tải từ php.ini
. Điều này có thể cải thiện một số hiệu suất khi bạn đang sử dụng một số (ví dụ XDebug). Ví dụ
php -n -r "phpinfo();"
Bạn phải sử dụng -n
và sau đó nối thêm từng tiện ích mở rộng cần thiết bằng cách sử dụng-dextension
Thí dụ:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Bạn chỉ có thể sử dụng
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp sao lưu dưới dạng php.php.bkp và ghi vào tệp gốc
&& nếu lệnh đầu tiên thành công thì hãy tải lại dịch vụ httpd.
nhưng tôi chỉ lưu ý rằng sed cho trạng thái thoát 0 khi tìm kiếm không khớp để bạn có thể sử dụng
php_ini=/path/of/php.ini
__module=x.so
grep -q "^extension=$__module" $php_ini && {
sed -i.bkp "s/^extension=$__module/# extension=$__module/" $php_ini &&
echo /etc/init.d/httpd reload; } || echo "cannot make requested change"
Hoặc bạn có thể sử dụng tập lệnh bên dưới để bật và tắt:
#!/bin/bash
php_ini=/path/of/php.ini
__module="$2"
[[ ! -f $php_ini ]] && { echo "Error: Can not found $php_ini" >&2;
echo "Please define php.ini path in $php_ini";
exit 1; }
[[ -z $__module ]] && { echo "Error: Please Type Module Name:" >&2;
exit 1; }
show_help(){
cat <<_EOF
Usage: To enable :
$0 -ie <modulename>
To disable :
$0 -id <modulename>
example:
$0 -i xyz.so
_EOF
}
do_enable() {
grep -Eq "# extension=$__module$" $php_ini && {
sed -i.bkp "s/^# extension\=$__module$/extension=$__module/" $php_ini &&
echo /etc/init.d/httpd reload; echo "Changes Successfully Done"; } || echo "cannot make requested change"
}
do_disable() {
grep -q "^extension=$__module" $php_ini && {
sed -i.bkp "s/^extension=$__module/# extension=$__module/" $php_ini &&
echo /etc/init.d/httpd reload; echo "Changes Successfully Done"; } || echo "cannot make requested change"
}
Main() {
case $1 in
-ie) do_enable ;;
-id) do_disable ;;
*) show_help ;;
esac
}
Main $*
conf.d/*.ini
các tập tin. Có lẽ một số sửa đổi cần phải được thực hiện?
cách sử dụng: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] module_name [module_name_2]
Vì vậy, sử dụng phpenmod -s cli yourextension
Tất cả các tệp cấu hình mô-đun PHP đã cài đặt có sẵn trong thư mục / etc / php / PHP_VERSION / mods có sẵn
awk
).