İçeriğe geç
CılgınYazılım

Geliştirici Araçları kod örnekli

WampServer MSVCR110.dll Hatası ve Doğru Kurulum Sırası

Hata bir DLL eksik diyor, ama çözüm DLL indirmek değil. Eksik olan, o dosyayı getiren Visual C++ 2012 paketidir.

Çılgın Yazılım 5 dk okuma

WampServer MSVCR110.dll Hatası ve Doğru Kurulum Sırası
İçindekiler
  1. Hata ne söylüyor: eksik olan dosya değil, paket
  2. Adım 1: Hangi Visual C++ paketlerinin kurulu olduğunu görün
  3. Adım 2: Visual C++ 2012 Update 4 paketini iki mimaride kurun
  4. Adım 3: WampServer'ı paketlerden sonra kurun
  5. Kalıcı çözüm: DLL'i isteyen bileşeni güncelleyin

WampServer MSVCR110.dll hatası, WampServer'ın başlattığı bir programın Visual C++ 2012 çalışma zamanı paketini bulamadığını söyler. Çözüm, DLL dosyasını bir siteden indirip bir klasöre kopyalamak değil; Microsoft'un Visual C++ 2012 Update 4 paketini hem x86 hem x64 olarak kurmak ve WampServer'ı bu paketlerden sonra kurmaktır; paketler eksikken kurduysanız WampServer'ı kaldırıp yeniden kurmanız gerekir.

Hata, program açılırken Windows 10 ve 11'de şu pencereyle gelir:

Metin
The code execution cannot proceed because MSVCR110.dll was not found.
Reinstalling the program may fix this problem.

Türkçe Windows'ta: "Kod yürütülmesi devam edemiyor çünkü MSVCR110.dll bulunamadı. Programı yeniden yüklemek bu sorunu çözebilir." Eski Windows sürümlerinde aynı hata "The program can't start because MSVCR110.dll is missing from your computer." diye görünür. Pencere başlığındaki program adı (ör. php.exe - Sistem Hatası) DLL'i hangi bileşenin istediğini söyler.

Visual C++ çalışma zamanı DLL adlarının hangi paket sürümüne ait olduğunu gösteren tablo
Eksik olan dosya değil, o dosyayı getiren pakettir.

Hata ne söylüyor: eksik olan dosya değil, paket

MSVCR110.dll, Visual Studio 2012 ile derlenmiş programların ihtiyaç duyduğu C çalışma zamanı kitaplığıdır ve Visual C++ 2012 paketiyle gelir. Adındaki 110, derleyicinin 11.0 sürümünü gösterir; bu yüzden DLL adından hangi paketin eksik olduğunu okuyabilirsiniz:

Eksik dosyaKurulacak paket
msvcr100.dllVisual C++ 2010 SP1
msvcr110.dllVisual C++ 2012 Update 4
msvcr120.dllVisual C++ 2013
vcruntime140.dllVisual C++ v14 (güncel paket, VS 2017–2026; eski adıyla 2015–2022)

WampServer'da bu dosyayı isteyen, VC11 yani Visual Studio 2012 ile derlenmiş bir bileşendir. Örneğin PHP 5.5 ve 5.6'nın Windows derlemeleri VC11 ile yapılmıştır (arşivdeki dosya adı php-5.6.40-Win32-VC11-x64.zip). Güncel PHP 8 derlemeleri ise vcruntime140.dll ister.

Adım 1: Hangi Visual C++ paketlerinin kurulu olduğunu görün

Kurulu paketler Ayarlar > Uygulamalar > Uygulamalar ve özellikler listesinde görünür (Windows 11'de adı Yüklü uygulamalar). Aynı listeyi 64 bit PowerShell'de tek komutla alabilirsiniz; "Windows PowerShell (x86)" penceresinde System32 klasörü SysWOW64'e yönlendirildiği için son iki satır yanıltıcı sonuç verir:

PowerShell
$yollar = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
          'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $yollar -ErrorAction SilentlyContinue |
    Where-Object { $_.DisplayName -like '*Visual C++*Redistributable*' } |
    Sort-Object DisplayName | Select-Object DisplayName, DisplayVersion

Test-Path "$env:WINDIR\System32\msvcr110.dll"   # 64 bit kopya
Test-Path "$env:WINDIR\SysWOW64\msvcr110.dll"   # 32 bit kopya

Bu yazının denendiği Windows 10 makinede listede yalnız "Microsoft Visual C++ 2015-2019 Redistributable (x64)" vardı ve iki Test-Path satırı da False döndü; yani o makinede VC11 ile derlenmiş bir PHP açılamaz. Dikkat: 64 bit Windows'ta System32 64 bitlik, SysWOW64 32 bitlik dosyaları tutar; komutun iki kayıt defteri yolunu birden okuması da bu yüzden: o makinede x64 paketinin kaydı bile WOW6432Node altındaydı. WampServer'ın dosya sayfasındaki Tools bölümünde bulunan Checks VC++ packages installed (check_vcredist.exe) aracı, WampServer 3'ün istediği paketlerin hepsini tek seferde denetler.

Adım 2: Visual C++ 2012 Update 4 paketini iki mimaride kurun

Paketin güncel indirme adresleri Microsoft Learn'deki "Latest supported Visual C++ Redistributable downloads" sayfasında, "Visual Studio 2012 (VC++ 11.0) Update 4" başlığında durur: x86 ve x64 dosyalarının ikisi de 11.0.61030.0 sürümüdür. Microsoft bu sürümü artık desteklemiyor, ama eski derlemeler için indirme bağlantıları yayında.

WampServer'ın resmî sayfası iki şeyi açıkça söylüyor: 64 bit Windows'ta her paketin hem 32 hem 64 bit sürümü kurulmalı; güncel sürüm için de Visual C++ v14 paketinin en son hâli öneriliyor. Aynı sayfa yalnız 2012'yi değil, VC9, VC10, VC11, VC13 ve VC14 paketlerinin güncel olmasını istiyor (VC9 yalnız PHP 5.3 ve 5.4 için gerekir). Paketlerin kendi aralarındaki sıra önemli değil; önemli olan hepsinin WampServer'dan önce kurulması. MSVCR110 düzeldikten sonra MSVCR120.dll ya da MSVCR100.dll hatası görmemek için 2010 SP1, 2013 ve v14 paketlerini de x86 ve x64 olarak kurun.

"DLL indir" sitelerinden tek bir msvcr110.dll alıp System32'ye kopyalamayın. Dosyanın kaynağı doğrulanamaz, paketin getirdiği diğer dosyalar (msvcp110.dll gibi) eksik kalır ve 32 bitlik bir bileşen System32'deki kopyayı hiç görmez.

Adım 3: WampServer'ı paketlerden sonra kurun

Sıra önemlidir: WampServer'ın dosya sayfası, paketler eksikken yapılan kurulumun hatalı olacağını ve eksik paketler kurulmadan önce WampServer'ın kaldırılması gerektiğini açıkça yazıyor. WampServer'ı zaten kurduysanız önce www klasörünüzü yedekleyin ve veritabanlarınızı phpMyAdmin'den dışa aktarın, sonra WampServer'ı kaldırın, paketleri kurun ve yeniden kurun.

Mevcut WampServer'ın üzerine kurmayın; resmî sayfaya göre bu hem çalışmaz hem de veritabanlarınızı kaybettirebilir.

Resmî sayfada Eylül 2026 itibarıyla tam kurulum sürümü 3.4.0, üzerine kurulan güncelleme 3.4.2'dir; önce tam sürüm, sonra güncelleme kurulur. Kurulum bitince sistem tepsisindeki simge durumu gösterir: yeşil tüm servislerin, turuncu yalnız bazılarının, kırmızı hiçbirinin çalışmadığı anlamına gelir.

Simge turuncuda kalıyorsa DLL'den önce 80 portuna bakın. Aynı makinede XAMPP ya da IIS çalışıyorsa Apache portu açamaz:

PowerShell
Get-NetTCPConnection -LocalPort 80 -State Listen |
    Select-Object LocalAddress, OwningProcess,
        @{ n = 'Program'; e = { (Get-Process -Id $_.OwningProcess).ProcessName } }
# 0.0.0.0    4456    httpd

OwningProcess portu tutan sürecin numarasıdır; Program sütunu adını verir. Denendiği makinede 80 portunu XAMPP'in Apache'si tutuyordu.

Kalıcı çözüm: DLL'i isteyen bileşeni güncelleyin

Paketleri kurmak hatayı giderir, ama DLL'i isteyen bileşen yerinde durur. Onu kurulum klasöründeki bin\php dizininden görürsünüz: 3.4.0 ile gelen PHP 8.0–8.5 derlemeleri vcruntime140.dll ister; php5.6.40 gibi bir klasör varsa MSVCR110'u isteyen odur. Bu yazının denendiği makinede php-5.6.40-Win32-VC11-x64 içindeki php.exe -v, Visual C++ 2012 olmadan 0xC0000135 (DLL bulunamadı) koduyla çıktı. PHP 5.6'nın desteği 31 Aralık 2018'de bitti; o sürüme bağlı bir proje yoksa eklentiyi kullanmayı bırakıp canlı sunucunuzdaki PHP sürümüne geçin. Yerel ortamda sık takılıyorsanız yerel geliştirme ortamını tek komutla kurmak yazısındaki Docker yolu, bu tür bağımlılıkları makineden tamamen ayırır.

Bu hatada Windows'un verdiği dosya adı bir indirme listesi değil, bir kimliktir: hangi Visual C++ paketinin eksik olduğunu, pencere başlığıyla birlikte de onu hangi bileşenin istediğini söyler. Kurulu paketleri PowerShell ile listeleyin, 2010, 2012, 2013 ve v14 paketlerini x86 ve x64 olarak kurun, WampServer'ı paketler eksikken kurduysanız verinizi yedekleyip kaldırın ve yeniden kurun, simge turuncuda kalırsa 80 portunu tutan programa bakın. MSVCR110'u isteyen bir PHP 5.6 eklentisiyse asıl düzeltme, projeyi canlı sunucudaki PHP sürümüne taşımaktır. Diğer PHP hataları için PHP hata mesajları ve hızlı çözümleri yazısına bakabilirsiniz.

Konunun derinlemesine anlatımı için: Microsoft Learn — Latest supported Visual C++ Redistributable downloads.

Beğeniniz benzer içerikleri öne çıkarmamıza yardımcı olur.

Sık sorulan sorular

MSVCR110 düzeldi ama şimdi MSVCR120.dll ya da MSVCR100.dll eksik diyor; neden?

Çünkü WampServer tek bir paket değil, VC9'dan VC14'e uzanan bir paket dizisi istiyor. MSVCR120.dll Visual C++ 2013'ün, MSVCR100.dll 2010 SP1'in dosyasıdır; ikisini de x86 ve x64 olarak kurun. VC9 (2008) yalnız PHP 5.3 ve 5.4 için gerekir.

MSVCR110.dll dosyasını System32 klasörüne kopyalamak işe yarar mı?

Tek başına yetmez. 64 bit Windows'ta 32 bitlik bir program dosyayı System32'de değil SysWOW64'te arar; doğru yere konsa bile paketin C++ kitaplığı msvcp110.dll gibi diğer dosyaları eksik kalır ve kopyanın kaynağı doğrulanamaz. Paketi x86 ve x64 olarak kurmak hepsini birden çözer.

64 bit Windows'ta neden 32 bit paket de gerekiyor?

64 bit Windows'ta 32 bitlik programlar DLL'leri SysWOW64 klasöründen, 64 bitlik programlar System32'den yükler. WampServer'ın resmî sayfası 64 bit Windows'ta her paketin iki mimarisinin de kurulmasını şart koşuyor; biri eksikse o mimarideki bileşen açılmaz.

Hata yalnız WampServer'da mı çıkar?

Hayır. Visual Studio 2012 ile derlenip C çalışma zamanına dinamik bağlanan (/MD) her program MSVCR110.dll ister ve paket yoksa aynı mesajı verir; çalışma zamanını içine gömen (/MT) programlar istemez. Çözüm de aynıdır: dosyayı değil, Visual C++ 2012 paketini programın mimarisine uygun olarak kurmak.

Yazan

Çılgın Yazılım

Ben Evren Çılgın; yazılım geliştirme, web teknolojileri ve sistem tasarımı alanlarında uzmanlaşmış bir geliştiriciyim. Uzun yıllardır hem frontend hem de backend tarafında üretken, ölçeklenebilir ve kullanıcı dostu çözümler üretiyorum.

Hakkımızda Bize ulaşın

Bu konuda bir projeniz mi var?

İhtiyacınızı birkaç cümleyle anlatın; uygun yaklaşımı birlikte belirleyelim.

Projenizi Anlatın

İlgili yazılar

Yorumlar

Henüz yorum yok. Sorunuzu ya da deneyiminizi ilk siz yazın.

Yorum yazın

Yorumunuz onaylandıktan sonra yayınlanır. Ekibimiz gerekirse konuyla ilgili bir yanıt da paylaşır.

Yayınlanmaz; yalnızca gerektiğinde size ulaşmak için.

En az 10 karakter.

Tüm yazılar