Rumah > Soal Jawab > teks badan
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=
xamppphpetc
目录。我还验证了 php.ini 文件中的扩展目录是 extension_dir="C:xamppphpext"
saya
php.ini: Dynamic Extensions
extension=php_sqlsrv_81_ts_x86.dll extension=php_pdo_sqlsrv_81_ts_x86.dll extension=php8ts.dllSaya 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
$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} membuangDari sini secara logiknya saya fikir okay, mari semak dengan menggemakandalam C:xampphtdocssiteindex.php pada baris 123
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
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粉7980104412023-11-10 19:58:28
Selesai. Terdapat dua soalan.
Pemasangan Xampp saya rosak. Ia tidak mengenali mana-mana DLL baharu yang saya perhatikan semasa menggunakan echo phpinfo();
pada halaman.
Atas sebab tertentu konfigurasi fail ini cuba menggunakan dll x86 dan bukannya x64 walaupun sambungan ditulis sebagai x64 dalam ini.
Langkah penyelesaian:
Saya memasang semula dan mengkonfigurasi semula Xampp sekali lagi dengan tetapan lalai dan kini dll dikenali.
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.