Mac’te PHP Çalıştırma: Adım Adım Kılavuz

Terminal’i Açma

Öncelikle, Terminal’i açmamız gerekiyor. Mac’te Terminal’e hızlıca ulaşmak için:

“Command (⌘) + Space” tuşlarına basarak Spotlight’ı açın ve “Terminal” yazın. Enter’a basarak Terminal’i açın.

PHP’nin Yüklü Olduğunu Kontrol Etme

PHP’nin sisteminizde yüklü olup olmadığını kontrol etmek için aşağıdaki komutu kullanın:

php -v

Eğer PHP’nin sürümü görüntülenirse, PHP yüklüdür. Eğer değilse, sonraki adıma geçin.

PHP’yi Yükleme

PHP’nin yüklü olmaması durumunda, Homebrew kullanarak PHP’yi yüklemeniz gerekecek. Bunun için önce Homebrew’ün yüklü olduğundan emin olun:

brew -v

Eğer Homebrew yüklü değilse, aşağıdaki komutu kullanarak kurun:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Ardından PHP’yi yüklemek için:

brew install php

Homebrew PATH Ayarlarını Güncelleme

Eğer Homebrew yükledikten sonra brew komutu çalışmıyorsa, PATH ayarlarını güncellemeniz gerekebilir. Terminal’e şu komutları girin:

echo ‘export PATH=”/opt/homebrew/bin:$PATH”‘ >> ~/.zprofile
source ~/.zprofile

PHP Dosyası Oluşturma ve Çalıştırma

Terminal’de masaüstüne gidin veya PHP dosyalarını koymak istediğiniz klasöre geçin:

cd ~/Desktop

Bir PHP dosyası oluşturun:

nano test.php

Aşağıdaki örnek PHP kodunu dosyaya ekleyin:

<?php echo "Hello, World!"; ?>

Dosyayı kaydetmek için “Control + O”, ardından çıkmak için “Control + X” tuşlarına basın.

http://localhost:8000/test.php

VsCode üzerinden projenizi çalıştırma

VSCode’u Başlatın: VSCode’u açın.

Proje Klasörünü Açın: Menüden File > Open Folder seçeneğine tıklayın ve masaüstünde bulunan PHP projenizin klasörünü seçin. Bu, projenizin tüm dosyalarını VSCode’da görüntülemenizi sağlar.

Terminal’i VSCode İçinden Açın

Yeni Terminal Açın: VSCode’da View > Terminal menüsüne tıklayarak veya “Control + ` (backtick)” tuş kombinasyonu ile Terminal’i açın.

Proje Klasörüne Geçin: Eğer Terminal’de doğru klasörde değilseniz, şu komutu kullanarak projenizin bulunduğu klasöre geçin:

cd ~/Desktop/proje-klasoru

PHP Yerel Sunucusunu Başlatma

php -S localhost:8000

Bu komut, projenizin ana klasöründe bir yerel PHP sunucusu başlatır ve projeyi localhost:8000 adresinde çalıştırır.

Tarayıcıda Projeyi Açın: Web tarayıcınıza gidin ve şu URL’yi girin:

http://localhost:8000

Bu, ana klasördeki index.php dosyasını çalıştıracaktır. Eğer başka bir dosyayı çalıştırmak istiyorsanız, URL’nin sonuna dosya adını ekleyin:

http://localhost:8000/dosyaadi.php

Ben Neden Anlamıyorum!

PHP Notice: Undefined variable: hatasının Çözümü

Notice: Undefined variable: ….. in ……. on line 2 şeklinde bir hata alıyorsanız bu hatanın çözümü bu makalede anlatılmaktadır.

PHP Notice: Undefined variable: hatasının Çözümü

Bu hatanın ekrana gelme sebebi tanımsız değişken (Undefined variable) bulunmasından kaynaklanmaktadır. Şimdi aşağıda ki örneği uygulayalım.

<?php
echo $emrah;

Yukarıda yer alan örnekte $emrah değişkeni ekrana yazdırılmış fakat içeriğine herhangi bir tanımlama yapılmadığından bu hatayı aldığımızı görüyoruz.

Hızlı Çözümler

Bu hatanın hızlı çözümü ilgili değişken başına gelip hata bastırma operatörü @ operatörünün kullanılmasıdır.

<?php
echo @$emrah;

Bir diğer hızlı çözümde ilgili sayfa başında notice uyarılarını gizleyen error_reporting() fonksiyonunun kullanımıdır.

<?php
error_reporting(E_ALL & ~E_NOTICE);
echo $emrah;

php.ini Dosyasından Kesin Çözüm

Bazı hostinglerde yada diğer kullanıcı local sunucularında bu hatanın gelmediğini görebilirsiniz. Bu durum php.ini yapılandırmasından kaynaklanmaktadır. php.ini dosyasında aşağıda gösterilen satırın başında yer alan ; işaretini kaldırdığınızda probleminiz kalıcı olarak çözülecektir.

php.ini dosyasını nasıl bulacağınızı bilmiyorsanız şu makaleyi inceleyin.

//php.ini dosyası
//Şu satırı bulun ve başında ki ; işaretini kaldırıp kaydedin.
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

İşlemin geçerli olması için apache sunucunuzu yeniden başlatmalısınız.

Önemli!

Bu konu ile ilgili aramalar

Kullanıcı Hesap Kontrolü PHP MySQL

Bir kullanıcının varlığını kayıtlı mail adresi veya kullanıcı adından kontrol edebiliriz.

Tablo ve kod yapısı aşağıda ki gibidir.

Tablo Yapısı

<?php
//Veritabanı Bağlantısı
$db = new PDO("mysql:host=localhost;dbname=learning", "root", "12345678");
$sql=$db->prepare("SELECT * FROM users WHERE user_mail=?");
$sql->execute(["info@emrahyuksel.com.tr"]);
if ($sql->rowcount()) {
	echo "Kullanıcı Mevcut";
} else {
	echo "Kullanıcı Bulunamadı";
}

Header Çalışmıyor, PHP Header Location Yönlendirme Probleminin Çözümü

Header Çalışmıyor, PHP Header Location Yönlendirme Probleminin Çözümü konulu eğitim videosunu izleyin

INSTAGRAM Çekiliş Scripti

Udemy üzerinde yayınlanan PHP 7 ile Sıfırdan MVC Proje Oluşturma PDO MySQL Uygulamalı kursumun içine INSTAGRAM Yorumlarından Çekiliş Scripti Yapma scripti eklendi.

PHP 7 ile Sıfırdan MVC Proje Oluşturma PDO MySQL Uygulamalı kursunda Composer işlemleri ile kodladığımız MVC projemize dahil ettiğimiz Simple HTML Dom Parser sınıfını uygulamalı olarak INSTAGRAM Yorumlarından Çekiliş Scripti Yapma projesini yazarak geliştirdik.

PHP 7 ile Sıfırdan MVC Proje Oluşturma PDO MySQL Uygulamalı kursuna indirimli olarak kayıt olup hem sıfırdan MVC projenizi kodlayın hemde kurs içerisinde yer alan 2 proje ile uygulamalı olarak kendinizi geliştirin. Bu kursun içinde yazılan INSTAGRAM Yorumlarından Çekiliş Scripti Yapma scripti kodlarını da bulabilirsiniz.

Online İndirimli Kayıt

https://www.udemy.com/course/php-mvc-egitimi/?couponCode=EMRAHYUKSELCOMTR1906

PHP İle Rastgele Sayı, Harf, Şifre Üretmek

PHP ile rastgele sayı üretebiliyoruz. Bu mantıktan yola çıkararak yazdığımız ek fonksiyonlar aracılığı ile harf ve çoğul olarak şifre üretimi de sağlayabiliriz.

Şimdi PHP ile rastgele sayı, rastgele harf ve şifre üretme işlemlerini 3 başlıkta öğreneceğiz..

Eğitimin video olarak anlatımını makale altında bulabilirsiniz.

PHP ile Rastgele Sayı Üretmek

PHP ile rand() fonksiyonunu kullanarak rastgele sayı üretebiliyoruz. Örneğin aşağıda ki örnek kullanımda 1 ile 100 arasında bir sayı üretmeyi sağlayabiliriz.

<?php
rand(1,100);
?>

PHP ile Rastgele Harf Üretmek

Php ile rastgele harf üretimini sayı üretmek gibi bir fonksiyon aracılığı ile hemen gerçekleştirmek mümkün değil. Bunun bir dizi yol izlememiz gerekiyor.

Öncelikle harf üretimi yapılacak bir küme elemanı saklayacağımız bir değişkene ihtiyacımız var.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

İzleyeceğimiz mantık şu. ilgili harf kümesini barındıran değişkenin içinde ki karakter sayısını hesaplamak ve hesapladığımız karakter sayısına kadar bir random sayı elde edip denk gelen karakteri listelemek.

Öncelikle $harfler değişkeninde kaç karakter var bunu öğrenelim.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
//echo strlen($harfler); 
echo mb_strlen($harfler);

Yukarıda $harfler değişkeni içerisinde yer alan karakter sayısını strlen() fonksiyonu ile öğrenmeye çalıştığınızda hatalı bir sonuç alabilirsiniz. Bunun nedeni türkçe karakterlerin ortaya çıkardığı sorundur. Bu sorunu mb_strlen() fonksiyonunu kullanarak çözebilirsiniz.

Dikkat!

Artık ilgili karakter depo değişkenimiz de kaç karakterimiz olduğunu biliyoruz. O zaman bu karakter sayısı aralığında yani 0-29 arasında bir sayı üretip denk gelen karakteri substr() fonksiyonu aracılığı ile gösterebiliriz. Türkçe karakter problemi yaşamamak için yine mb_substr() olarak fonksiyomuzu kullanıyoruz. Ayrıca PHP 7.1 ile birlikte rand() fonksiyonu artık mt_rand() olarak kullanılması öneriliyor.

//Karakter deposu
$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
//karakter deposunda ki harf sayısı hesaplanıp 1 çıkartılıyor. Bunun sebebi mb_substr fonksiyonunun ilk karakteri 0 olarak baz almasıdır.
$harf_say=mb_strlen($harfler)-1;
//0 ile Karakter deposu sayısı arasında rastgele bir sayı üretiliyor.
$harf_sec=mt_rand(0,$harf_say);
//Rastgele üretilen sayıya denk gelen harf listeleniyor
echo mb_substr($harfler,$harf_sec,1);

İlgili kodun sadeleştirilmiş hali. Değişkenlerden soyutlayıp tek satırda şu şekilde yazabiliriz.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
echo mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

PHP ile Rastgele Şifre Üretmek

PHP ile rastgele harf üretimini gerçekleştirdik. Döngü ile bu işlemi belirtilen sayıda tekrar edersek istediğimiz uzunlukta bir şifre elde etmiş oluruz.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

for ($i=1; $i<=5; $i++)
{
$password.=mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);
}
echo "Üretilen Şifre: ".$password;

$i<=5; bu kısımda belirttiğimiz 5 şifrenin uzunluğunu ifade ediyor. Şimdide bunu fonksiyonlaştıralım.

PHP ile Rastgele Şifre Üretme Fonksiyonu

Yazdığımız fonksiyonlar bizi kodlardan ayrıştırarak daha rahat bir kullanım olanağı sağlar ve işlerimizi pratikleştirir. Onlarca kod satırını tekrar tekrar kullanmak yerine tek bir satırda istediğimiz sürekli işlemleri yapmayı sağlar.

function passGenerator($password_length) {
$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";
mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);
for ($i=1; $i<=$password_length; $i++)
{
$password.=mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);
}
return $password;
}

//Fonksiyonunun Kullanımı
echo passGenerator(5);

EĞİTİMİN VİDEO ANLATIMI

https://www.youtube.com/watch?v=PhvXJbdYYQ4&feature=youtu.be

PHP’de Ölümcül Hataları (Fatal Errors) Gösterme

PHP kodlarımızda yaptığımız farketmediğimiz hatalar sonucu eğer hata gösterimi display errors kapalı ise hiç hoşumuza gitmeyen HTTP 500 ekranı ile karşılaşırız.

Bu ekran bize hata konusunda hiçbir fikir vermez ve sayfamızda yer alan kodumuz da kalabalıksa bir türlü hatanın nereden kaynaklandığını göremeyiz. İşte bu durumda sinirlerimiz epey bir gerilir 🙂

Cpanel üzerinde YAZILIM bölümünde Select PHP Versiyon‘a tıklayıp sağ üst köşede yer alan Switch to PHP Options linkinden aşağıda ki ekrana ulaşabilirsiniz.

Bu ekranda yer alan display_errors seçeneği off konumundaysa aldığımız hataları bir altta yer alan error_reporting kısmında özelleştirilmiş kısıtlamaya göre ekranda göremeyiz.

display_errors özelliğini on konuma getirip kaydettikten sonra HTTP 500 olarak karşımıza gelen hatanın detayı artık karşımızda.

Local sunucunuzda aynı işlemleri php.ini dosyanız üzerinde display_error özelliğini on konuma getirerek gerçekleştirebilirsiniz.

PHP extract Fonksiyonu ile Basit Değişken Ataması

extract fonksiyonu bir dizide ki değerleri direkt erişebileceğimiz değişkenlere aktarmaktadır. Aşağıda yer alan örnekte $course isimli bir dizi değişken içerisinde yer alan title değerine extract() fonksiyonundan diziyi geçirdikten sonra sadece değişken ismi ile erişebiliyoruz.

<?php 
$course=
	[
		"title" => "PHP",
		"instructor" =>  "Emrah Yüksel",
		"date" => "20.01.2019"
	];
	
extract($course);
echo $title;
?>

extract() fonksiyonuna aktarılan dizi değişken içerisinde mevcut sayfada oluşturulmuş değişken isimleri ile eşleşen anahtar değerler bulunuyorsa EXTR_PREFIX_SAME sabit değeri ve ön parametre değeri belirterek çakışmayı önleyebiliyoruz. Aşağıda yer alan örnekte “nx” ön değeri tamamen özelleştirilebilir.

<?php
$title="Emrah Yüksel";
$course=
	[
		"title" => "PHP",
		"instructor" =>  "Emrah Yüksel",
		"date" => "20.01.2019"
	];
	
extract($course,EXTR_PREFIX_SAME, "nx");
echo $title;
echo "<br/>";
echo $nx_title;

PHP Tarihe Gün Ekleme Tarihten Gün Çıkarma

PHP projelerimizde tarih bilgisini sıkça kullanırız. Bazı durumlarda mevcut tarihimizden ileri yada geri giderek değişik tarihler elde etmemiz gerekir. Bu dersimizde elimizde bulunan bir tarihe gün ekleme ve gün çıkarma işlemlerine göz atacağız.

Bu dersimizde PHP ile tarih işlemlerinin minik bir özetine değinecek olsakta Sıfırdan İleri Seviyeye PHP 7 kitabımda bol örnekli PHP ile Tarih işlemleri bölümü bulunmaktadır.

PHP ile Tarihe Gün Ekleme

Öncelikle işlem yapacağımız bir tarih elde etmemiz gerekiyor. Projelerinizde bu bilgiyi veritabanında tuttuğunuz ilgili tablodan elde edebilirsiniz. Bunun yerine biz date() fonksiyonundan yararlanarak günün tarih bilgisini elde ediyoruz.

<?php 
$nowDate = date("Y-m-d");
echo $nowDate;

Elde ettiğimiz tarih bilgisini ekrana yazdırmaya çalıştığımızda Warning: date(): It is not safe to rely on the system’s timezone settings.  ile başlayıp devam eden bir hata alırsanız bu hatanın sebebi ilgili zaman bölge formatının tanımlı olmamasından kaynaklıdır.

Önemli!

Kodumuzu şu şekilde güncellediğimiz de problem çözülecektir.

<?php
date_default_timezone_set('Europe/Istanbul');
$nowDate = date("Y-m-d");
echo $nowDate;

Artık elde ettiğimiz tarih bilgisini ekrana yazdırabildik. Şimdi sıra ilgili tarihe ekleme yapmaya geldi.

Tarihe gün ekleme işlemini strtotime() fonksiyonu ile fonksiyonun arttırma parametrelerini kullanarak kolay bir şekilde gerçekleştirebiliriz. Bu işlem sonucunda elde edeceğimiz sonuç unix zaman damgası şeklinde saniye cinsinden değer olacaktır. Aşağıda ki işlem sonucunda $newDate değişkenini ekrana yazdırdığınız da çıkan sonucu kontrol edebilirsiniz.

$newDate = strtotime('1 day',strtotime($nowDate));

Saniye cinsinden elde ettiğimiz değeri yine date() fonksiyonuna ikinci parametre vererek istediğimiz tarih formatına dönüştürebiliriz.

$newDate = date('Y-m-d' ,$newDate );

Artık saniye cinsinden arttırarak elde ettiğimiz değer bizim belirlediğimiz formatta bir tarih’e dönüştü.

Aşağıda elde edilen bir tarihe 1 gün eklediğimiz tüm işlem yapısını gösteren kodu inceleyebilirsiniz

<?php
date_default_timezone_set('Europe/Istanbul');
$nowDate = date("Y-m-d");
echo "Günün Tarihi....:".$nowDate;
echo "<br/>";
$newDate = strtotime('1 day',strtotime($nowDate));
echo "Arttırılmış Zaman Damgası....:".$nowDate;
echo "<br/>";
$newDate = date('Y-m-d' ,$newDate );
echo "Arttırılan Yeni Tarih....:".$newDate;
 ?>

PHP ile Tarihten Gün Çıkarma

PHP ile tarihe gün ekleme işlemlerinde uzun bir anlatım oldu. Ama PHP ile tarihten gün çıkarma işlemlerinde basit bir değişiklik yaparak aynı kod yapısını kullanacağız.

PHP ile gün çıkarma işlemi yapmanız için tek yapmanız gereken strtotime fonksiyonuna artış değer parametresi olarak verdiğimiz “1 day” bilgisini “-1 day” olarak değiştirmek olacaktır.

<?php
date_default_timezone_set('Europe/Istanbul');
$nowDate = date("Y-m-d");
echo "Günün Tarihi....:".$nowDate;
echo "<br/>";
$newDate = strtotime('-1 day',strtotime($nowDate));
echo "Arttırılmış Zaman Damgası....:".$nowDate;
echo "<br/>";
$newDate = date('Y-m-d' ,$newDate );
echo "Arttırılan Yeni Tarih....:".$newDate;
 ?>