Ubah direktori modul php

8

Saya mengkompilasi php, dan pengaturannya adalah direktori modules saya ke / usr / lib64 / 20090626-zts

Saya ingin mengubahnya ke / usr / lib64 / php / modules, tetapi saya tidak dapat menemukan opsi konfigurasi untuk melakukannya.

Saya dapat mengubahnya di php.ini saya dan memindahkan direktori, tetapi ketika saya menjalankan phpize dan membuat modul baru itu masih menempatkannya di / usr / lib64 / 20090626-zts

copacetic
sumber
Belum punya waktu untuk menguji ini: EXTENSION_DIR=/usr/lib64/php/modules phpize.
Mark Wagner

Jawaban:

4

Saya menyarankan agar / usr / lib64 / php / modules menjadi symlink ke folder dengan ID. Ini mencegah pencampuran ekstensi dari versi PHP yang berbeda dalam jangka panjang.

Selain itu: Anda harus dapat mengaturnya dengan menetapkan EXTENSION_DIRsebagai variabel lingkungan sebelum menjalankan konfigurasi PHP. sesuatu seperti

 $ EXTENSION_DIR=/my/location ./configure --with-some-extension
johannes
sumber
Ya itu masuk akal, saya tidak ingin modul saya konflik di masa depan. Saya pikir saya hanya akan meninggalkan nama folder saja.
copacetic
8

Periksa direktori ekstensi saat ini dengan:

php-config --extension-dir

dan Anda dapat mengubahnya dengan menetapkan extension_dirdi php.ini:

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

Jangan lupa untuk me-restart Apache.

kuanta
sumber
0

Masalah saya tidak identik, tetapi karena pertanyaan ini adalah yang pertama muncul dengan jawaban yang pada akhirnya sangat membantu, saya akan menambahkan komentar saya.

Saya mengalami kesulitan mendapatkan PHP (di bawah Centos7 berjalan dalam wadah buruh pelabuhan) untuk menggunakan MySQL karena konfigurasi direktori - meskipun saya menggunakan binari pra-dibangun dan tidak mengkompilasi apa pun. Meskipun berbagai modul pdo dan mysqlnd.so dan file .ini dipasang di wadah saya (hanya menggunakan standar yum install php72dan semua hal lain yang ditentukan dalam wisaya pemasangan PHP ), mereka tidak berada di tempat default yang dicari oleh PHP. Saya tidak tahu kenapa. Mungkin itu semacam buruh pelabuhan?

Pokoknya, untuk mengatasi masalah ini saya harus mengulangi extension_dirarahan saya PHP.inidan JUGA mengatur PHP_INI_SCAN_DIRvariabel env. Ini adalah perintah yang relevan dari Dockerfile saya

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

Saya harap ini tidak menghasilkan konflik modul di kemudian hari seperti yang diperingatkan oleh @johanes.

charlesdeb
sumber
> "mereka tidak ada di tempat default." Anda tidak mengikuti instruksi wizard dengan benar, memilih "versi tunggal", semua yang terpasang di tempat default. SCL menggunakan jalur yang berbeda untuk memungkinkan banyak versi.
Remi Collet
@RemiCollet terima kasih atas tanggapannya. Saya memilih versi tunggal dari wizard - yang saya pikir saya inginkan karena saya hanya ingin satu versi PHP di wadah saya. Satu-satunya bagian dari instruksi wizard yang tidak saya tambahkan di dockerfile saya adalah `yum --enablerepo = remi-php72-test install php-xxx` dan yum update. Apakah saya melewatkan sesuatu di sini?
charlesdeb
Perintah terbaru ini adalah untuk paket pengujian, dan untuk ekstensi tambahan (ganti xxx dengan nama ekstensi yang Anda inginkan)
Remi Collet
@RemiCollet Maaf, saya pasti agak bodoh. Apakah Anda mengatakan bahwa jika menggunakan paket tes ini akan memperbaiki masalah saya pada modul mysql yang tidak masuk ke .../remi/...folder?
charlesdeb
1
Saya mengatakan bahwa paket-paket php- (versi tunggal) menggunakan jalur standar, dan php72-php- * (SCL, banyak versi) menggunakan / opt / remi. Lihat blog.remirepo.net/pages/English-FAQ#scl
Remi Collet