Rumah  >  Soal Jawab  >  teks badan

XAMPP/SQLSRV: Tidak dapat mencari Sqlsrv dalam PHPINFO() - ralat daripada sambungan

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 menggunakan sqlsrv untuk 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粉201448898P粉201448898368 hari yang lalu680

membalas semua(1)saya akan balas

  • P粉798010441

    P粉7980104412023-11-10 19:58:28

    Selesai. Terdapat dua soalan.

    1. Pemasangan Xampp saya rosak. Ia tidak mengenali mana-mana DLL baharu yang saya perhatikan semasa menggunakan echo 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.

    balas
    0
  • Batalbalas