Rumah  >  Soal Jawab  >  teks badan

Fail php pdo_pgsql wujud tetapi tidak dikenali

Menjalankan DigitalOcean Droplet pada Ubuntu (20.4?)

Pengguna A saya mempunyai kebenaran root. Mereka juga disambungkan kepada penggunaA dalam pangkalan data postgres.

Disebabkan persediaan perisian yang saya gunakan, mereka memerlukan nama pengguna khusus untuk postgresdb. Untuk mengelak daripada mendedahkan terlalu banyak data dalam talian, kami akan memanggilnya userB. Ini adalah kedua-dua pengguna linux dan postgres.

Saya menjalankan arahan php yang pada asasnya mengambil (uname,dbname,pdo,options) sebagai input tetapi pada masa ini ia gagal kerana ia tidak dapat mencari fail pdo.

Saya menyemak imbas beberapa siaran. Seseorang mencadangkan menyahkomen semua baris pgsql dan pdo_pgsql dalam semua fail php.ini, yang telah saya lakukan, sama ada untuk pengeluaran, pembangunan atau versi tujuan umum fail tersebut.

Apabila saya menjalankan arahan sebagai userA dan userB, saya mendapat ralat ini.

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /usr/lib/php/20190902/pdo_pgsql (/usr/lib/php/20190902/pdo_pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0

Namun, pdo_pgsql.so sebenarnya wujud di lokasi tersebut. (Adakah ia mencari fail bernama pdo_pgsql tetapi pdo_pgsql.so?)

laman web php berkata untuk menjalankan satu

./configure

arahan, tetapi ia tidak benar-benar menyatakan di mana konfigurasi folder terletak. Ia bukan pakej yang saya boleh pasang dari cli. (https://www.php.net/manual/en/ref.pdo-pgsql.php)

Halaman lain mengatakan anda perlu memasang autoconf dahulu (https://unix.stackexchange.com/questions/158960/can-not-run-configure-command-no-such-file-or-directory), tetapi tiada cara untuk membuat ini. / Konfigurasikan arahan yang boleh digunakan untuk saya.

Saya juga menemui artikel yang mengatakan bahawa fail conf dalam apache perlu dikemas kini untuk menunjukkan lokasi fail PDO, tetapi saya belum mempunyai pelayan yang sedang berjalan, saya hanya menjalankan fail php yang mengisi pangkalan data pgsql tempatan. (sambungan pgsql tidak dimuatkan)

Berlari

php -i | grep PDO

diberikan

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /usr/lib/php/20190902/pdo_pgsql (/usr/lib/php/20190902/pdo_pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => pgsql
PDO Driver for PostgreSQL => enabled

Walaupun mengikut perkhidmatan pelanggan API, ia sepatutnya kembali

PDO
PDO support => enabled
PDO drivers => mysql, odbc, pgsql
PDO Driver for MySQL => enabled
PDO Driver for ODBC (unixODBC) => enabled
PDO Driver for PostgreSQL => enabled

Walaupun saya rasa mereka memberikan beberapa contoh pemacu yang berbeza bergantung pada perisian pangkalan data yang anda pilih.

Saya tidak pasti apa yang perlu dilakukan.

Kemas kini:

Saya cuba dengan mengedit fail php.ini yang digunakan oleh php

php -i | grep ini

Saya telah menggunakannya

locate pdo_pgsql

Cari laluan fail pdo_pgsql dan pdo_pgsql.so. Saya telah mencuba 4 suntingan berbeza pada fail php.ini. 2 Nyahkomen (satu demi satu) sambungan pgsql lalai. 2 adalah laluan fail yang berbeza ke fail pdo_pgsql yang terdapat pada sistem saya melalui locate.

**extension=/usr/lib/php/20190902/pdo_pgsql.so**

sudo php file.php

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20190902/pdo_pgsql.so' (tried: /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: **undefined symbol: pdo_parse_params**), /usr/lib/php/20190902//usr/lib/php/20190902/pdo_pgsql.so.so (/usr/lib/php/20190902//usr/lib/php/20190902/pdo_pgsql.so.so: **cannot open shared object file: No such file or directory**)) in Unknown on line 0

**extension=/var/lib/php/modules/7.4/registry/pdo_pgsql**

sudo php file.php

PHP Warning:  PHP Startup: Unable to load dynamic library '/var/lib/php/modules/7.4/registry/pdo_pgsql' (tried: /var/lib/php/modules/7.4/registry/pdo_pgsql (/var/lib/php/modules/7.4/registry/pdo_pgsql: **file too short**), /usr/lib/php/20190902//var/lib/php/modules/7.4/registry/pdo_pgsql.so (/usr/lib/php/20190902//var/lib/php/modules/7.4/registry/pdo_pgsql.so: **cannot open shared object file: No such file or directory)**) in Unknown on line 0
Could not open input file: file.php

**extension=pgsql**

sudo php file.php

**PHP Warning:  Module 'pgsql' already loaded in Unknown on line 0**
Could not open input file: file.php

**extension=pdo_pgsql**

sudo php file.php

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /usr/lib/php/20190902/pdo_pgsql (/usr/lib/php/20190902/pdo_pgsql: **cannot open shared object file: No such file or directory**), /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: **undefined symbol: pdo_parse_params**)) in Unknown on line 0
Could not open input file: file.php

Output mengikut keperluan pengguna di bawah

$ php -v
PHP 7.4.3 (cli) (built: Mar  2 2022 15:36:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

$ dpkg -l|grep pgsql
ii  php-pgsql                       2:7.4+75                           all          PostgreSQL module for PHP [default]
ii  php7.4-pgsql                    7.4.3-4ubuntu2.10                  amd64        PostgreSQL module for PHP

$ dpkg -l|grep php
ii  php-common                      2:75                               all          Common files for PHP packages
ii  php-pgsql                       2:7.4+75                           all          PostgreSQL module for PHP [default]
ii  php7.4-cli                      7.4.3-4ubuntu2.10                  amd64        command-line interpreter for the PHP scripting language
ii  php7.4-common                   7.4.3-4ubuntu2.10                  amd64        documentation, examples and common module for PHP
ii  php7.4-json                     7.4.3-4ubuntu2.10                  amd64        JSON module for PHP
ii  php7.4-opcache                  7.4.3-4ubuntu2.10                  amd64        Zend OpCache module for PHP
ii  php7.4-pgsql                    7.4.3-4ubuntu2.10                  amd64        PostgreSQL module for PHP
ii  php7.4-readline                 7.4.3-4ubuntu2.10                  amd64

P粉191610580P粉191610580179 hari yang lalu336

membalas semua(1)saya akan balas

  • P粉463824410

    P粉4638244102024-03-22 09:12:49

    Jika sesuatu tidak berfungsi pada DEV enc anda, jangan cuba pada PROD..itu mengalahkan tujuan memiliki DEV env..

    Dalam php.ini anda sepatutnya sudah mempunyai contoh tentang cara mendayakan pgsql:

    extension=pdo_pgsql

    Bukan module=

    Saya tidak tahu versi PHP yang anda ada, tetapi sila pastikan anda memasang versi yang sesuai php7.X-pgsql kerana anda nampaknya mempunyai versi perpustakaan yang salah.

    Mungkin anda boleh menambah output berikut pada soalan anda:

    dpkg -l|grep pgsql
    dpkg -l|grep php
    php -v

    balas
    0
  • Batalbalas