Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQLSRV ve PDO_SQLSRV sürücüleri PHP eklentileridir. PHP, PHP süreci başladığında php.ini ve ek .ini dosyalarını okuyarak bunları yükler.
Yükleme kurulumdan ayrıdır. Uzantıyı kopyalamak veya oluşturmak dosyayı diske yerleştirir. PHP, aktif yapılandırma doğru girişi içeren duruma gelene ve PHP işlemi yeniden başlatılana kadar SQLSRV veya PDO_SQLSRV kullanamaz.
Web tanı sayfalarını koruyun
Geçici phpinfo() bir sayfa oluşturmadan önce, web sunucusunu yalnızca localhost’tan gelen isteklere veya kimliği doğrulanmış yöneticilere erişim izni verecek şekilde yapılandırın. Bu kısıtlamayı sayfayı silene kadar koruyun.
phpinfo() ortam değişkenlerini, kimlik bilgilerini ve sunucu yapılandırmalarını açığa çıkarabilir. Doğrulamanın hemen ardından sayfayı kaldırın.
PHP yapılandırma kapsamını anlamak
Her PHP sunucu uygulama programlama arayüzü (SAPI) farklı bir çalıştırılabilir ve yapılandırma kullanabilir:
| Runtime | Tipik yapılandırma kaynağı | Bunu nasıl tanımlarım |
|---|---|---|
| Komut satırı arabirimi (CLI) |
php --ini tarafından bildirilen php.ini ve tarama dizini |
php --ini öğesini tam çalıştırılabilir dosyayla çalıştır |
| IIS FastCGI | IIS FastCGI uygulamasında yapılandırılmış PHP çalıştırılabilir dosyası | Geçici phpinfo() bir sayfa kullanın |
| Apache modülü | Apache'nin PHP modül yapılandırması | Geçici phpinfo() bir sayfa kullanın |
| PHP-FPM | FPM çalıştırılabilir dosyası, havuz, ve php.ini ve tarama dizini |
-i ile sürümlü FPM ikilisini çalıştırın veya geçici bir phpinfo() sayfası kullanın |
| Uzun süreli çalışan | Çalıştırılabilir ve çalışanı başlatan ortam | Worker service’i inceleyin ve değişikliklerden sonra yeniden başlatın |
CLI yapılandırmasını değiştirmek, başka bir PHP kurulumu veya tarama dizini kullandıklarında IIS, Apache veya PHP-FPM'yi etkilemez.
PHP yapılandırmasını bulun
Uygulamanızın kullandığı PHP yürütülebilir dosyasıyla bu komutları çalıştırın:
php --ini
php -i | findstr /I "PHP Version Thread Safety Architecture extension_dir"
Linux veya macOS'ta, findstr yerine grep ile değiştirin:
php -i | grep -E "PHP Version|Thread Safety|extension_dir"
file "$(php -r 'echo PHP_BINARY;')"
file komutu, seçili çalıştırılabilir dosyanın mimarisini belirler. Evrensel bir macOS çalıştırılabilir dosyası için açık mimari seçimini izleyin.
Yüklenmiş Yapılandırma Dosyası ve ek .ini dosyalarının taranacağı yer değeri, komut satırı sürecinin kullandığı yapılandırmayı tanımlar. Bir web sunucusu veya PHP FastCGI Süreç Yöneticisi (PHP-FPM) süreci farklı bir PHP çalıştırılabilir veya yapılandırma dosyası kullanabilir. O sürecin değerlerini belirlemek için geçici bir phpinfo() sayfa kullanın.
Bir dosyayı düzenlemeden önce şunları kaydedin:
- PHP yürütülebilir dosyasının yolu ve sürümü.
- Yüklenmiş
php.ini. - Ek
.initarama dizini dosyası. - Uzantı dizini.
- İş parçacığı güvenliği modu ve mimarisi.
- Yeniden başlatmanız gereken her süreç.
Değiştirdiğiniz her yapılandırma dosyasını yedekleyin.
Sürücüleri Windows'ta yükleyin
PHP Eklenti Yükleyicisi (PIE) ile kurulum için önce PIE'yi indirin ve doğrulayın. Aşağıdaki komutları, pie.phar içeren dizinden, sürücüleri yükleyecek PHP çalıştırılabilir dosyasıyla çalıştırın:
php .\pie.phar install microsoft/sqlsrv
php .\pie.phar install microsoft/pdo_sqlsrv
PIE, php_sqlsrv.dll ve php_pdo_sqlsrv.dll kurar. Eğer PIE uzantıları otomatik olarak etkinleştiremiyorsa, etkin php.ini içindeki mevcut SQLSRV ve PDO_SQLSRV girdilerini kaldırın, ardından ekleyin:
extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll
Her sürücü için sadece bir giriş kullanın. PHP yapılandırmasını değiştirdikten sonra işlemini yeniden başlatın.
ZIP kurulumu için, PHP minör sürümü, mimarisi ve iş parçacığı güvenlik moduna uyan dinamik bağlantı kütüphanelerini (DLL) dizine extension_dir kopyalayın. PHP 8.5 x64 iş parçacığı güvenli çalışma zamanı, şu dosya adlarını kullanır:
php_sqlsrv_85_ts_x64.dll
php_pdo_sqlsrv_85_ts_x64.dll
Her iki dosya adını da PHP sürecinin kullandığı php.ini öğesine ekleyin:
extension=php_sqlsrv_85_ts_x64.dll
extension=php_pdo_sqlsrv_85_ts_x64.dll
ts, x64 ve 85 öğelerini PHP çalışma zamanınızın değerleriyle değiştirin. İş parçacığı güvenli ve iş parçacığı güvenli olmayan dosyaları, 32-bit ve 64-bit dosyaları veya başka bir PHP minör sürümü için oluşturulmuş dosyaları karıştırmayın.
Sürücüleri Linux ve macOS'ta yükleyin
Sürücüleri PIE kullanarak kurun. Daha fazla bilgi için Linux ve macOS kurulum eğitimine bakınız. PIE, uzantı dosyalarını yükler ve platformun PHP yapılandırma araçlarını kullanarak veya ek php.ini dosyasına ya da standart extension= dosyasına bir .ini girişi ekleyerek bunları etkinleştirmeye çalışır. PIE bir uzantı etkinleştiremediğini bildirirse, girişi kendiniz ekleyin ve aktif yapılandırmayı doğrulayın.
Manuel kurulum için, PHP sürümüne, mimariyenize, iş parçacığı güvenlik modunuza ve işletim sisteminin yerel kütüphanelerine uyan önceden oluşturulmuş .so dosyaları seçin.
Önceden hazırlanmış Linux ve macOS gereksinimlerini kontrol et; bunlar ortamınızla eşleşmiyorsa PIE kullanın.
Örneğin, PHP 8.4 iş parçacığı güvenli olmayan dosyalar SQLSRV_8.4_NTS.so ve PDO_SQLSRV_8.4_NTS.so olarak adlandırılır. Onları php -i | grep extension_dir tarafından döndürülen dizine yerleştirin. Bunları, aşağıdaki girdileri kullanmak için sqlsrv.so ve pdo_sqlsrv.so olarak yeniden adlandırın veya bunun yerine girdilerde tam paket dosya adlarını kullanın. Bu girişleri, aktif PHP yapılandırmanıza bu bölümde tanımlanan yükleme sırasına ekleyin:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
PHP Veri Nesneleri (PDO) PDO_SQLSRV'den önce yüklenmelidir. PHP, ek php.ini dosyalarını alfabetik sırayla taramadan önce .ini okur. Dağıtımınız pdo.so öğesini taranmış bir dosyadan yüklüyorsa, PDO_SQLSRV girişini daha sonra taranan bir dosyaya yerleştirin; örneğin PDO, 10-pdo.ini kullandığında 30-pdo_sqlsrv.ini gibi. O durumda PDO_SQLSRV girişini koymayın php.ini .
Uzantı girişlerini seçin
Sürücülerin kurulma şekline uyan girişler kullanın:
| Platform ve yöntem | SQLSRV entry | PDO_SQLSRV girişi |
|---|---|---|
| PIE ile Windows | extension=php_sqlsrv.dll |
extension=php_pdo_sqlsrv.dll |
| Windows tarafından yayımlanan ZIP | Tam sürümlü DLL adı, örneğin extension=php_sqlsrv_85_ts_x64.dll |
Tam sürümlü DLL adı, örneğin extension=php_pdo_sqlsrv_85_ts_x64.dll |
| Linux veya macOS ile PIE | extension=sqlsrv.so |
extension=pdo_sqlsrv.so |
| Linux veya macOS için yayımlanan arşiv, yeniden adlandırılan dosyalar | extension=sqlsrv.so |
extension=pdo_sqlsrv.so |
| Linux veya macOS sürüm arşivi, orijinal dosyalar | Tam arşiv dosya adı, örneğin extension=SQLSRV_8.4_NTS.so |
Tam arşiv dosya adı, örneğin extension=PDO_SQLSRV_8.4_NTS.so |
Aynı uzantı için hem kısa bir isim hem de sürümlü bir isim yapılandırmayın. PHP, bir modülün zaten yüklendiğini bildirebilir veya yükseltmeden sonra eski bir dosyayı yüklemeye devam edebilir.
Sürücüleri yüklemek için PHP'yi yeniden başlatın
Bir uzantı dosyası veya yapılandırma dosyası değiştirildikten sonra işlemi yeniden başlatın. Web sunucusunu, PHP-FPM’yi, kuyruk çalışanlarını ve sürücüyü yükleyen diğer uzun süreli PHP süreçlerini yeniden başlatın.
SQLSRV ve PDO_SQLSRV uzantıları bağımsız olarak yüklenebilir, ancak uygulamanız her iki sürücüyü kullandığında ikisini de kurup doğrulayın. PDO, birçok PHP paketine entegre edilmiştir. Eğer PDO yerleşik değilse, PDO_SQLSRV'den önce PDO uzantısını etkinleştirin.
Yüklenen sürücüleri doğrulayın
Komut satırı çalışma zamanı için çalıştırın:
php --ri sqlsrv
php --ri pdo_sqlsrv
php -m | findstr /I "sqlsrv pdo_sqlsrv"
Linux veya macOS'ta şunları kullanın:
php --ri sqlsrv
php --ri pdo_sqlsrv
php -m | grep -E "sqlsrv|pdo_sqlsrv"
Bir web sunucusu için, <?php phpinfo(); ?>.
Yüklenmiş Yapılandırma Dosyası, extension_dir ve ayrı pdo_sqlsrv ile sqlsrv bölümlerini onaylayın. Doğrulamadan sonra sayfayı kaldırın.
Ayrıca doğrulamanın sadece modül isimlerini değil, her iki API'yi de kapsayan PHP düzeyinde bir kontrol yapın. Bu programı verify-php-drivers.php olarak kaydedin:
<?php
$checks = [
'SQLSRV extension' => extension_loaded('sqlsrv'),
'SQLSRV API' => function_exists('sqlsrv_connect'),
'PDO_SQLSRV extension' => extension_loaded('pdo_sqlsrv'),
'PDO_SQLSRV API' => class_exists('PDO')
&& in_array('sqlsrv', PDO::getAvailableDrivers(), true),
];
$failed = false;
foreach ($checks as $name => $passed) {
echo $name . ': ' . ($passed ? 'loaded' : 'missing') . PHP_EOL;
$failed = $failed || !$passed;
}
exit($failed ? 1 : 0);
Programı, uygulamanızın kullandığı her PHP çalıştırılabilir dosyayla çalıştırın:
php verify-php-drivers.php
Beklenen çıkış:
SQLSRV extension: loaded
SQLSRV API: loaded
PDO_SQLSRV extension: loaded
PDO_SQLSRV API: loaded
Web çalışma zamanı için, dosyayı geçici olarak belge köküne yerleştirin ve tarayıcıdan erişin. Doğrulamadan sonra kaldırın. Bu program veritabanı bağlantısı açmaz veya yapılandırma değerlerini yazdırmaz.
CLI ve web çalışma süresi kontrollerini tamamladıktan sonra sil verify-php-drivers.php .
Sürücü yükleme sorunlarını giderin
| Belirti | Kontrol etme nedeni | Düzeltici eylem |
|---|---|---|
Unable to load dynamic library |
Yanlış dosya adı, extension_dir, PHP minör sürümü, mimari veya iş parçacığı güvenliği modu |
Seçilen sürücü dosyasıyla karşılaştırın php -i ve yol hatalarını izole etmek için geçici olarak mutlak bir yol kullanın |
The specified module could not be found Windows'ta |
Sürücü DLL'si veya bağımlılıklarından biri mevcut değil | DLL'nin extension_dir içinde olduğunu doğrulayın, eşleşen Visual C++ çalışma zamanını kurun ve kalan eksik DLL bağımlılığını inceleyin |
undefined symbol veya Linux ya da macOS'ta paylaşılan kitaplık hatası |
Uzantı ve PHP derleme uyumsuzluğu veya ODBC bağımlılığı eksik | İstenilen php-config ile yeniden derleyin, ardından bildirilen eksik kitaplığı inceleyin |
Module "sqlsrv" is already loaded |
Tekrarlanan kayıtlar veya iki taranmış dosya | Yüklenen php.ini ve tarama dizininde arama yapın, sonra bir giriş sakla |
could not find driver PDO'dan |
PDO_SQLSRV yüklü değil ya da PDO ondan sonra yükleniyor |
php --ri pdo_sqlsrv öğesini kontrol et ve PDO_SQLSRV girişini PDO'dan sonraya taşı. |
| CLI çalışıyor ama web istekleri başarısız oluyor | Farklı bir SAPI yapılandırması ya da yeniden başlatılmamış bir süreç | CLI ve phpinfo() yapılandırma değerlerini karşılaştırın, web yapılandırmasını düzenleyin ve web sürecini yeniden başlatın |
Yükseltmeden sonra eski ExtensionVer kalır |
Konfigürasyon hâlâ eski sürümlü bir dosyanın adını içeriyor | Eski girişi, seçilen yöntemle kurulan dosyayla değiştirin, tekrarları kaldırın ve tüm PHP işlemlerini yeniden başlatın |
PHP, uzantı keşfini ve yükleme sırasını yönetir. PIE veya elle yapılan bir kopyalama uzantı dosyasını sağlar. İşletim sistemi yükleyicisi yerel bağımlılıkları çözer. Microsoft ODBC Sürücüsü, uzantı yüklendikten sonra veritabanı protokolünü yönetir.