Thay đổi thư mục mô-đun php


8

Tôi đang biên dịch php và nó thiết lập thư mục mô-đun của tôi thành / usr / lib64 / 20090626-zts

Tôi muốn thay đổi điều này thành / usr / lib64 / php / mô-đun, nhưng tôi không thể tìm thấy một tùy chọn cấu hình để làm như vậy.

Tôi có thể thay đổi nó trong php.ini của mình và di chuyển thư mục, nhưng khi tôi chạy phpize và tạo một mô-đun mới, nó vẫn đặt nó trong / usr / lib64 / 20090626-zts


Không có thời gian để kiểm tra điều này : EXTENSION_DIR=/usr/lib64/php/modules phpize.
Đánh dấu Wagner

Câu trả lời:


4

Tôi sẽ đề nghị tạo / usr / lib64 / php / mô-đun thành một liên kết tượng trưng đến thư mục có ID. Điều này ngăn việc trộn các phần mở rộng từ các phiên bản khác nhau của PHP trong thời gian dài.

Bên cạnh đó: Bạn sẽ có thể đặt nó bằng cách đặt EXTENSION_DIRlàm biến môi trường trước khi chạy cấu hình của PHP. cái gì đó như

 $ EXTENSION_DIR=/my/location ./configure --with-some-extension

Vâng, điều đó có ý nghĩa, tôi không muốn các mô-đun của mình xung đột trong tương lai. Tôi nghĩ rằng tôi sẽ chỉ để lại tên thư mục một mình.
copacetic

8

Kiểm tra thư mục tiện ích mở rộng hiện tại với:

php-config --extension-dir

và bạn có thể thay đổi nó bằng cách đặt extension_dirtrong php.ini:

extension_dir="/usr/lib64/php/modules"

Đừng quên khởi động lại Apache.


0

Vấn đề của tôi không giống nhau, nhưng vì câu hỏi này là câu hỏi đầu tiên xuất hiện với câu trả lời cuối cùng rất hữu ích, tôi sẽ thêm ý kiến ​​của mình.

Tôi đã gặp sự cố khi PHP (dưới Centos7 chạy trong bộ chứa docker) sử dụng MySQL do cấu hình thư mục - mặc dù tôi đang sử dụng các tệp nhị phân dựng sẵn và không biên dịch bất cứ thứ gì. Mặc dù các mô-đun pdo và mysqlnd.so và các tệp .ini khác nhau đã được cài đặt trong bộ chứa của tôi (chỉ sử dụng tiêu chuẩn yum install php72và tất cả các công cụ khác được chỉ định trong trình hướng dẫn cài đặt PHP ), chúng không ở những nơi mặc định mà PHP đang tìm kiếm chúng. Tôi không biết tại sao. Có lẽ đó là một số loại docker?

Dù sao, để giải quyết vấn đề, tôi phải lặp lại một extension_dirchỉ thị cho tôi PHP.inivà CSONG đặt PHP_INI_SCAN_DIRbiến env. Đây là các lệnh có liên quan từ Dockerfile của tôi

ENV PHP_INI_SCAN_DIR=/etc/php.d/
RUN echo 'extension_dir = "/usr/lib64/php/modules"' >> /etc/opt/remi/php72/php.ini

Tôi hy vọng điều này không dẫn đến việc có được xung đột mô-đun sau này khi @johanes cảnh báo.


> "chúng không ở những nơi mặc định." Bạn đã không làm theo đúng hướng dẫn của trình hướng dẫn, chọn "phiên bản đơn", mọi thứ được cài đặt ở những nơi mặc định. SCL sử dụng các đường dẫn khác nhau để cho phép nhiều phiên bản.
Remi Collet

@RemiCollet cảm ơn bạn đã phản hồi. Tôi đã chọn phiên bản duy nhất từ ​​trình hướng dẫn - đó là điều tôi nghĩ tôi muốn vì tôi chỉ muốn một phiên bản PHP trên thùng chứa của mình. Phần duy nhất trong các hướng dẫn của trình hướng dẫn mà tôi đã không thêm vào dockerfile của mình là `yum --enablerepo = remi-php72-test cài đặt php-xxx` và yum update. Am i thiếu cái gì ở đây?
charlesdeb

Các lệnh mới nhất này dành cho các gói thử nghiệm và cho tiện ích mở rộng bổ sung (thay thế xxx bằng tên của tiện ích mở rộng bạn muốn)
Remi Collet

@RemiCollet Xin lỗi, tôi phải hơi ngu ngốc. Bạn có nói rằng nếu sử dụng các gói kiểm tra, điều này sẽ khắc phục vấn đề của tôi về các mô-đun mysql không đi vào các .../remi/...thư mục?
charlesdeb

1
Tôi nói rằng các gói php- * (phiên bản đơn) sử dụng các đường dẫn tiêu chuẩn và php72-php- * (SCL, nhiều phiên bản) sử dụng / opt / remi. Xem blog.remirepo.net/pages/English-FAQ#scl
Remi Collet
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.