coolwolf / 04/05/2015

IIS 7.5 ve PHP “500 internal server error”

PHP’den açsanız bile IIS 7.5 php hatalarını göstermiyor.
Bunun yerine 500 – Internal Server Error hatası gösteriyor.
Bu sorunu çözmek için komut satırını yönetici olarak açın ve aşağıdaki komutu çalıştırın :

c:\windows\system32\inetsrv\appcmd.exe set config "{siteadi}" -section:system.webServer/httpErrors /existingResponse:"PassThrough" /commit:apphost

{siteadi} yazan yere hataları göstermesini istediğiniz sitenin IIS’te tanımlı olan adınız yazın.

coolwolf / 16/03/2013

WordPress’te güncelleme yaptığınızda klasör silme hatası

For english look here
Eğer wordpress’te tema güncelleme, eklenti güncelleme yada başka bir dosya işlemi yaptığınızda hata alıyorsanız.
Fakat 30 dakika beklediğinizde işlemi yapabiliyor hale geliyorsanız.
Bu süre içinde baktığınızda sildiğiniz klasörlerin hala silinmemiş olduğunu görüyorsanız 2 çözümünüz var.
1. Wincache eklentisini devre dışı bırakmak.
2. PHP’nin wincache eklentisini güncellemek:

Wincache eklentisini güncellemek için aşağıdaki adımları uygulayınız.
Öncelikle bu http://www.iis.net/downloads/microsoft/wincache-extension siteden wincache eklentisinin son sürümünü indiriniz.
Ardından php_wincache.dll dosyasını PHP eklentilerinizin olduğu dizine kopyalayınız.

English :
If you use wordpress and if you recevice error when update themes or plugins.
If you can do this update after 30 minutes.
In this time when you look at deleted folder you see your folders are not deleted ?
Then you have a problem with PHP extension Wincache.
There are 2 solutions :
1. Disable the winchache extension.
2. Download new version of wincache extension from here http://www.iis.net/downloads/microsoft/wincache-extension and copy php_wincache.dll to your PHP extension directory.

coolwolf / 01/12/2010

PHP 3. String ve Matematiksel İşlemler

3. dersimizde PHP ile string işlemleri ve matematiksel işlemler yapmayı öğreneceğiz.
İlk olarak matematiksel işleme bir örnek verelim.
round (yuvarla) komutu :
round komutu ile virgülden sonraki rakkamları yuvarlıyoruz yada en yakın tamsayıya tamamlıyoruz.
Örnekler:

echo round(45.4);         // 45
echo round(45.5);         // 46
echo round(45.6);         // 46
echo round(45.6, 0);      // 46
echo round(32.268759, 2);  // 32.27
echo round(1425879, -3); // 1425000
echo round(32.0268, 3);    // 32.027
echo round(32.055, 2);    // 32.06

Diğer matematiksel işlem fonksyonları için http://www.php.net/manual/en/ref.math.php adresine bakabilirsiniz.
PHP içerisinde toplama,çıkarma,bölme ve çarpma operatörleri aşağıdaki gibidir:
Toplama:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi+$ikincisayi;  //67
?>

Çıkarma:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi-$ikincisayi;  //23
?>

Bölme:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi/$ikincisayi;  //2.0454545454545
?>

Çarpma:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi*$ikincisayi;  //990
?>

String işlemleri:
http://www.php.net/manual/en/ref.strings.php linkine tıklayarak tüm string işleme fonksiyonlarına ulaşabilirsiniz.
Biz çok kullanılan birkaç fonksiyondan örnek verelim.
md5() komutu verdiğimiz bir string’i md5 şifrelenmiş hale dönüştürür.
Örnek:

<?php
$metin="Merhaba Dunya";
echo md5($metin);
?>

str_replace() komutu bir string içerisinde aradığınız değeri bulur ve vereceğiniz değer ile değiştirir.
str_replace ($bunu_ara,$bununla_degistir,$bunun_icinde)
Örnek:

<?php
$bunun_icinde="Merhaba Dunya";
$bunu_ara="er";
$bununla_degistir="$";
echo str_replace($bunu_ara,$bununla_degistir,$bunun_icinde);
?>

strlen() komutu verilen string’in kaç karakter içerdiğini sayar.
Örnek:

<?php
$metin="Merhaba Dunya";
echo strlen($metin);  //13
?>

strpos() komutu verilen string’in içerisinde verilen karakter’in ilk oalrak kaçıncı sırada olduğunu verir.
Örnek:

<?php
$metin="Merhaba Dunya";
$bul="a";
echo strpos($metin,$bul);  //4
?>

substr() komutu verilen string’in içerisinden belli bir bölümü alır.
Örnek:

<?php
$metin="Merhaba Dunya";
echo substr($metin,2,6);  //rhaba
echo substr($metin,2);  //rhaba Dunya
?>

Yukarıda birkaç string işleme fonksiyonu örneği verdik. Bir sonraki dersimiz veritabanı bağlantıları ile ilgili oldukça uzun bir ders olacak.

coolwolf / 01/12/2010

PHP 2. İlk komutumuzu yazalım

Bir önceki makalede php çalıştırmak için gerekli olan araçları kurduk. Şimdi ilk php sayfamızı çalıştıralım ve sonucu görelim.
Öncelikle şunları hatırlatalım:
PHP sayflaraının uzantısı .php olmalıdır. (Tabi ki bu uzantıyı değiştirmek mümkün. Fakat biz genel geçer kurallar üzerinde konuşalım.)
.php uzantılı olmayan dosyalardaki php kodları aynen olduğu gibi web tarayıcısına gönderilecektir. Haliyle bunlar işlem görmeyecek hatta son kullanıcı tarafından görülebilecektir.
.php uzantılı dosyalar aslında HTML formatında dosyalardır. Yani <html> tag’ı ile başlar </html> tagı ile biterler. Bunların farkı araya php kodları yazıyor olmamızdır.
PHP kodları HTML kodu içerisinde <?php blablakod ?> şeklinde yazılırlar. <?php ?> tagları arasında yazılmayan kodlar yine işlem görmeyecektir.
Biz kendi yerel sunucumuzda çalışıyoruz. İstersek php.ini dosyasından tüm hataları görünür yapabiliriz. Fakat yine de alışkanlık haline getirelim ve hata kontrolü (debug) yapmak sitediğimiz sayfaların başına error_reporting(E_ALL); kodunu yazalım ki oluşabilecek hataları ekranda görelim. Peki bu hataları her zaman neden görüntülemiyoruz diye sorabilirsiniz. Mesele şu ki eğer tüm hata mesajlarınızı görüntülerseniz kodlarınız ve sisteminiz hakkında birçok bilgiyi kötü niyetli kişilere kolayca verebilirsiniz.
PHP yapı oalrak C dili ile benzerlik göstermektedir. Bu benzerliklerden biri de tüm satırlar ; (noktalı virgül) ile bitmelidir.
Şimdilik aklıma gelen önemli noktalar bu kadar. Hadi ilk kodumuzu yazalım.
<?php echo ‘merhaba dünya’; ?> Bu kodu index.php isimli bir dosyaya kaydedelim ve webroot dizinimize koyalım. Bir önceki makalede de anlattığımız gibi WampServer için bu root dizini “c:\wamp\www” dizinidir. Yani biz index.php dosyamızı buraya koyacağız. Sonra da tarayıcımızın adres satırına http://localhost yazacağız.
Eğer herşey yolunda gitmişse sayfanın sol üst köşesinde merhaba dünya yazısını görmemiz gerekiyor. Görmüyorsak bundan önce izlediğimiz adımları kontrol etmekte fayda var.
Eğer daha önce normal bir programlama dili kullandıysanız temel olarak giriş ve çıkış komutları olduğunu zaten biliyorsunuz. Yani writeln, readln, scanf, printf, readkey, print gibi komutlarla ekrana yazı yazdırdık ve klavyeden giriş aldık. (Tabi bu bahsettiklerim visual olmayan diller)
PHP’de echo yad aprint komutuyla ekrana bilgi yazdırıyoruz. Klavyeden birşeyler okumak için ise genellikle HTML FORM kullanıyoruz. Bir örnekle açıklayalım:

<?php
if(isset($_POST['adi']) && isset($_POST['soyadi']))
{
echo 'Sorgu çalıştı <br>';
echo $_POST['adi'].' '.$_POST['soyadi'];
}
?>
<html>
<head><title>PHP Öğreniyorum</title></head>
<body>
<form name="form1" action="_self" method="POST">
<input name="adi" type="text" size="25" maxlenght="25">
<input name="soyadi" type="text" size="25" maxlenght="25">
<input type="submit" name="button" value="Tamam">
</form>
</body>
</html>

Yukarıda kırmızı ile yazılan kısım sayfanın php derleyicisi tarafından işlenecek kısmı. Mavi ile yazılı olan kısım ise doğrudan tarayıcıya gönderilecek kısım.
İlk satırda bir sorgu çalıştırdık ve POST metodu ile sayfaya gönderilen “adi” ve “soyadi” değişkenlerinin bir değere set edilip edilmediklerini kontrol ettik. isset komutu herhangi bir değişkenin set edip edilmediğini yani bir değer içerip içermediğini kontrol eder. Fakat şunu hatırlatmakta yarar var. Eğer “adi” değişkeninin değeri “” (boş karakter), ” ” (boşluk), “0” (sıfır) gibi değerlere set edilmişse bile isset sorgusu 1 (True) olarak dönecektir. Burada kontrol edilen değişkenin içeriği değil kendisinin bellekte yer alıp almamış olmasıdır.
Biz IF sorgumuzda hem “adi” hem de “soyadi” değişkenlerinin set edilmiş olmasını istedik. Bu durumda sayfayı ilk açtığımızda karşımıza herhangi bir yazı çıkmayacak çünkü bu iki değişkeni set etmedik.
Sayfanın mavi ile yazılmış kısmıda ise basit bir HTML sayfası ve içinde de bir FORM yer almaktadır. Bu form’un adı “form1”, içeriğini göndereceği yer “_self” (yani kendisi. Buraya islemler.php yazsaydım tamam butonuna bstığımda değerleri islemler.php sayfasına gönderecekti), gönderme metodu “POST” olarak belirlenmiştir. Formun içinde her ikisinin de görülebilir ve kullanılabilir karakter giriş sayısı 25 olmak üzere bir “adi” diğeri “soyadi” isminde iki adet TEXT FIELD’ımız var. Son olarak da formu ACTION’da tanımlanan hedefe göndermesi için SUBMIT butonumuz var.
Tamam (Submit) butonuna bastığımızda artık “$_POST[‘adi’]” ve “$_POST[‘soyadi’]” değişkenleri bir değere sahipler. Biz bunları boş bırakıp gönder butonuna bassak bile bu iki değişken artık boş da olsa bir değere sahipler. Bu nedenle sorgu çalışacak ve “adi” “soyadi” değişkenlerini ekrana yazacaktır (boş olsalar bile.)
Sonra tekrar forma birşey yazıp “Tamam” butonuna bastığımızda bu sefer de yeni yazdıklarımız üstte gözükecektir.
Böylece klavyeden birşeyler girdik ve bunları sayfada yazdırdık. Bundan sonraki konuda birkaç matematik işlem ile stringler üzerinde birkaç deneme yapacağız. Ondan sonra da veritabanına birşeyler yazıp okumayı deneyeceğiz.
Herkese iyi çalışmalar
Bölüm 3 ->

coolwolf / 01/12/2010

PHP 1. Başlamak için gerekenler

Merhaba,
Elimden geldiğince PHP ile programlamaya yeni başlayanlar için bir kılavuz oluşturmaya çalışacağım.
PHP ile yaptığım yüzlerce uygulama var. Fakat yine de ben bu konuda çok iyiyim diyemem çünkü PHP dilini benden daha iyi kullanan birçok kişi var. Ortalama bir programcı sayılırım PHP konusunda.
Bunu özellikle belirtmemin sebebi şu:
Burada yazanları tek yol olarak kabul etmeyin. Herkesin kendine göre bir programcılık anlayışı vardır. Öğrendikçe yeni yöntemler kullanmanız kaçınılmaz. En iyi kod yazım şekli benim yazdığım şekilde olmayabilir. Farklı kod yazma mantıkları ile karşılaştığınızda şaşırmayın.
Şimdi gelelim konumuza:
Öncelikle bilgisayarımıza Php + Mysql + Apache + bunları yönetecek araçlar kurmalıyız. Bu işi en kolay şekilde yapmanın yollarından biri WampServer kullanmak. WampServer’ı bilgisayarınıza buradan indirip kurabilirsiniz.
Benim kurduğum WampServer şunları içeriyor: Apache 2.2.8, PHP 5.2.6 + PECL, SQLitemanager, MySQL 5.0.51b, Phpmyadmin.
Belki çoğunuz biliyorsunuz ama biz yine de bunların ne işe yaradığını açıklayalım.
Apache bir WEB sunucusudur. Sizin IP adresinize yapılan web isteklerine cevap verir. Sanal sunucular, cgi işlemleri, güvenli web gibi işlerden apache sorumludur. Basit olarak anlatmak gerekirse apache kendisine gelen istekleri tanımlı olan sanal sunucu dizininden okuyup kullanıcıya geri gönderir. Eğer kullanıcı farklı isimde bir dosya istememişse varsayılan olarak index.html dosyasını (kurulumda yapacağınız tanımlara göre bunlar değişir.Örn: PHP çalışması için index.php dosyalarını da varsayılan olarak açması gerekir.) gönderir.
Mysql bir veritabanı sunucusudur. Excel’de gördüğünüz sayfaları (Sheet) düşünün. Veritabanı her bir Sheet’i bir tablo olarak saklar. Sonra da bu tablolarda SQL diliyle işlem ve sorgulama yapmamızı sağlar.
PHP bir programlama dilidir. .PHP uzantılı web sayfaları apache tarafından ziayretçiye gönderilmeden önce PHP yorumlayıcısına (interpreter) gönderilir. PHP yorumlayıcısı bu kodları işler ve düz html çıktısı olarak sonucu apache’ye gönderir. Apache de bu süz html çıktısını ziyaretçinin web tarayıcısına gönderir. Böylece php sayfamız gereğini icra etmiş olur.
Dönelim WampServer’a.
WampServer varsayılan olarak “C:\wamp” dizinine kurulur.
Bu dizinin içindeki “www” dizini web sayfalarınızı tutacağınız dizindir.
“apps” dizininde sqlitemanager ve phpmyadmin bulunur.
“bin” dizini içerisinde de apache, php ve mysql programları bulunur. Oluşturacağınız veritabanları “C:\wamp\bin\mysql\mysql5.0.51b\data” dizini ieçrisinde saklanır. Yaptığınız projeleri yedeklemek isterseniz bu dizini yedeklemelisiniz.
Artık bilgisayarımızda kurulu bir Web Server + PHP + MySql Server’ımız var.
WampServer’ı çalıştırıp durdurmak için görev çubuğuna yerleşen WampServer simgesine çift tıklayarak gerekli işlemleri yapabilirsiniz.
Bundan sonraki derslerimizde PHP ile basit uygulamalar yapacağız.
Herkese İyi Çalışmalar.
Bölüm 2

coolwolf / 01/12/2010

IIS ve PHP kullanılarak Sql Server 2008e bağlanmak

İlyas SARIYURT tarafından yazıldı | 04 Mart 2010
Bu işlemleri tamamlamadan önce sisteminizde PHP kurulu olmaıdır.
Ayrıca  sql 2008 native client da kurulu olmalıdır. Bu client SQL Server 2000, 2005 ve 2008 sürümlerine bağlantı kurmak için kullanılabilir.
Aşağıdaki adresten sql driver for php yi indirin:
http://download.microsoft.com/download/e/e/1/ee11dd54-c5a1-4bbc-99cd-a5c297115192/SQLServerDriverForPHP.EXE
Sql driver for PHP yi kurun. Kurulum esnasında dosyaların nereye çıkarılacağını soracaktır. c:\php\ext yada c:\program files\php\ext sizin php extensionsa klasörünüz neresiyse o klasörü seçin.
Ardından php.ini dosyasının en sonuna

[PHP_SQLSRV] php_sqlsrv.dll

satırlarını ekleyin.
IIS iyeniden başlattığınızda sql driver kullanmaya hazır oalcaktır.

coolwolf / 01/12/2010

invalid access to memory location

If you get “invalid access to memory location” error when try to enable php_mysql.dll MySql extension or php_pgsql.dll PostgreSql extension try this solution:
Add you PostgreSql or Mysql bin path to PATH environment variable.
Right click on My Computer ->
Properties ->
Advanced ->
Environment Variables ->
Find Path in System Variables ->
Click edit ->
First place this -> ; character at the end, then write your bin path or copy and paste it