XAMPP/SQLSRV: Tidak dapat mencari Sqlsrv dalam PHPINFO() - ralat daripada sambungan
P粉201448898
P粉201448898 2023-11-09 22:34:33
0
1
501

Saya cuba menyambung ke pangkalan data SQL Server saya yang dihoskan pada VM Linux. Saya menjalankan xampp pada mesin windows pembangunan saya, dan sambungannya adalah dari tapak php yang saya bina. Saya rasa saya perlu menggunakansqlsrvuntuk menyambung. Saya memuat turun dll sql-server-ver15&viewFallbackFrom=sql-server-2019 daripada https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=

Saya telah mengalihkan fail dll yang diperlukan ke

xamppphpetc目录。我还验证了 php.ini 文件中的扩展目录是extension_dir="C:xamppphpext"saya

Yang berikut telah ditambahkan pada bahagian

php.ini:Dynamic Extensions

extension=php_sqlsrv_81_ts_x86.dll extension=php_pdo_sqlsrv_81_ts_x86.dll extension=php8ts.dll

Saya menemui maklumat tentang pemadaman

dll dalam talian. Saya telah mencuba setiap konfigurasi di atas, baik logik dan tidak logik.php_前缀、删除.dll后缀、使用 ts 或非 ts、将所有文件移动到扩展目录、仅将上面列出的几个文件移动到目录中的信息,不包括php8ts。 dll

Ini adalah contoh kod sambungan untuk tapak web saya:

$conn = new PDO('sqlsrv:Server=my_server_ip\MSSQLSERVER;Database=dbname', 'username', 'password'); if ($conn === false) { echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true); exit; } else { echo "success"; }

Saya mencuba beberapa contoh sambungan yang berbeza. Dengan melakukan perkara di atas, saya mendapat ralat ini:

Ralat maut: PDOException yang tidak ditangkap: Pemacu tidak ditemui dalam C:xampphtdocssiteindex.php:123 Surih tindanan: #0 C:xampphtdocssiteindex.php(123): PDO ->__construct('sqlsrv:Server=my_server_ip' , 'username', 'kata laluan') #1 {main} membuang

dalam C:xampphtdocssiteindex.php pada baris 123

Dari sini secara logiknya saya fikir okay, mari semak dengan menggemakan phpinfo();. Tiada apa-apa tentang

atau varian PDO disenaraikan di mana-mana dalam senarai. Walaupun anda menekan ctrl+f pada halaman sqlsrv, anda hanya boleh menemui ralat di atas.phpinfo();。列表中的任何位置都没有列出sqlsrv

Saya telah mengesahkan bahawa pemacu ODBC telah dipasang.

Perkara lain yang saya pernah cuba ialah menggunakan

dan bukannya PDO. Saya menemui maklumat yang bercanggah mengenai versi php saya (8.1) tetapi saya fikir saya akan mencubanya. Walau bagaimanapun, apabila saya menemui varian ini saya mendapat:sqlsrv_connect

Ralat maut: Panggilan ke fungsi yang tidak ditentukan sqlsrv_connect()

Bagi saya adalah jelas bahawa .dll saya tidak dikenali atau sesuatu seperti itu. Namun untuk hidup saya, saya tidak faham mengapa. Saya telah mengesahkan semuanya berjalan sebagai pentadbir, memulakan semula xampp beberapa kali, memadam/memuat turun semula dll, dsb.

Bolehkah sesiapa menunjukkan sebarang isu jelas yang mungkin saya tidak fikirkan?

P粉201448898
P粉201448898

membalas semua (1)
P粉798010441

Selesai. Terdapat dua soalan.

  1. Pemasangan Xampp saya rosak. Ia tidak mengenali mana-mana DLL baharu yang saya perhatikan semasa menggunakanecho phpinfo();pada halaman.

  2. Atas sebab tertentu konfigurasi fail ini cuba menggunakan dll x86 dan bukannya x64 walaupun sambungan ditulis sebagai x64 dalam ini.

Langkah penyelesaian:

  1. Saya memasang semula dan mengkonfigurasi semula Xampp sekali lagi dengan tetapan lalai dan kini dll dikenali.

  2. Saya mengalih keluar dll x86 daripada direktori sambungan Xampp.

php.ini akhir adalah seperti ini:

extension=php_sqlsrv_81_ts_x64.dll extension=php_pdo_sqlsrv_81_ts_x64.dll extension=php8ts.dll extension=php_pdo_odbc.dll extension=php_pdo.dll

Menggunakan .dll akhir mungkin berlebihan, tetapi ia masih akan berfungsi seperti yang diharapkan. Pastikan anda mengesahkan versi sqlsrv atau pdo_sqlsrv yang betul kerana isu keserasian dengan versi php anda mungkin timbul.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!