PHP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
PHP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

PHP: Oracle SQL Injection

 Cross-Site Scripting: Persistent web güvenliği açısından çok önemli ve dikkat edilmesi gerken bir durumdur. PHP kodu ile Oracle SQL de injection engellemek için aşağıdaki yöntemi kullanabilirsiniz. Bir oracle bağlantısı kurabilmek için ilk olarak sorgu hazırlanır.

query="select * from tablo where userID=:user"

$user="username";

$parse = oci_parse($connectora, $query);

oci_bind_by_name($parse, ':user', $username);

$r = oci_execute($parse)

XSS

PHP IP Adresi Doğrulama

 PHP'de bir formdan girilen IP adresini doğrulamak için aşağıdaki kodları kullanabilirsiniz. IPv4 ve IPv6 için ayrı ayrı iki adet IP doğrulama kodu mevcuttur. Bu kod değişkenin uygun bir IP adresi olup olmadığını söyler.

IP versiyon 4 için;

<?php
$ip = "127.0.0.1";

if (filter_var($ip, FILTER_VALIDATE_IP)) {
    echo("$ip is a valid IP address");
} else {
    echo("$ip is not a valid IP address");
}
?>

IP versiyon 6 için;

<?php
$ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    echo("$ip is a valid IPv6 address");
} else {
    echo("$ip is not a valid IPv6 address");
}
?>

      

XAMPP için PHP Yazılım Upgrade Nasıl Yapılır

 PHP Yazılımını upgrade etmek için ilk olarak aşağıdaki URL'e gidilir ve yeni yazılım versiyonu bilgisayara indirilir. Burada XAMPP server üzerinde PHP yazılımını nasıl upgrade edeceğimizi yazacağız. Diğer uygulamalar da benzer şekilde yapılabilir. İşletim sistemi için uygun olan XAMPP yazılımı dosya seçilerek indirilmelidir.

https://www.apachefriends.org/download.html

Bilgisayarınıza indirdiğiniz yazılımı bilgisayarınızda bir klasöre açın. Sunucu üzerinde çalışan Apache servisini durdurun. Sunucudaki PHP yazılımının klasörünün adını değiştirin (Kesinlikle silmeyin) İndirip diske açtığınız klasördeki PHP klasörünü sunucuda eski PHP klasörünün olduğu dizine kopyalayın. Eksi PHP klasöründe bulunan php.ini dosyasını yeni klasör içindeki dosya ile değiştirin ve Apache servisini tekrar başlatın.

PHP içine daha önce modül yüklediyseniz Apache açılırken hata verecektir. Yüklediğiniz bu modülleri de aynı klasöre diğer klasörden kopyalayıp servisi tekrar açmayı denemelisiniz. Sorun devam ediyorsa geri dönüş yeni klasörü silip eski klasörün adını tekrar PHP yapmak şeklinde olacaktır. İşlem tamamlandıktan sonra versiyon testlerini info.php dosyasından yapabilirsiniz.

      

PHP ile Özel Karekter Filtreleme

PHP kullanılırken form üzerinden özel karekterlerin sunucuya gönderilmesi bazı zafiyetlere neden olabilir. Zafiyetlerin ve güvenlik açıklarının engellenmesi için kullanıcılardan gelen tüm özel karekterler filtrelenmelidir. Özel karekterleri filtrelemediğiniz durumda verilerinizi koruyamayabilirsiniz. Form veya kullanıcıdan sunucuya gelen tüm veriler için mutlakan özel karekterlerin filtrelenmesi önerilir. Aşağıdaki kod özel bazı karekterlerin filtrelenmesini sağlar. Burada POST ile alınan bir veride arama yapılmaktadır, aynı işlem GET ile alınan veriye de uygulanabilir.

İlk olarak whide list uygulamak güvenlik açısından daha öenmlidir. Aşağıda gelen değerin içinde özel karekterleri filtreleyen ve IP adresini doğrulayan bir fonksiyon görüyorsunuz.

$raw_input = $_GET['IPV4'];

$IPv4 = htmlspecialchars($raw_input, ENT_QUOTES, 'UTF-8');

if  (filter_var($IPv4, FILTER_VALIDATE_IP))
{ }

Kullanıcı girdilerini doğru bir şekilde filtreleyin: Verileri htmlspecialchars() veya filter_input() gibi fonksiyonlarla filtreleyerek HTML özel karakterlerini ve diğer potansiyel zararlı karakterleri temizleyin.

$name = filter_input(INPUT_POST, $_POST["veri"], FILTER_SANITIZE_SPECIAL_CHARS);

veya

htmlspecialchars($_POST["veri"], ENT_QUOTES, 'UTF-8')

veya

if (preg_match('/[\'^£$%&*()}{@#~?><>,|=+¬-]/', $_POST["veri"]))
{
  $_POST["veri"] = ''"; //Değeri sıfırla
}
else
{
  // Herhangi bir değişiklik yapma.
}

Aşağıda bir başka fonksiyon örneği bulunmaktadır.

function RemoveSpecialChar($str) {
      // Using str_replace() function 
      // to replace the word 
      $res = str_replace( array( '\'', '"',
      ',' , ';', '<', '>', '?', '-', '='), ' ', $str);
      // Returning the result 
      return $res;
      }
$_POST["veri"] = RemoveSpecialChar($_POST["veri"]);


Aşağıda da GET ile yazılan başka bir fonksiyon bulunmaktadır.

if  (preg_match('/[\'^£$";%&*()}{@#~?><>,|=+¬-]/', $_GET["veri"]))
{
$_GET["veri"]="";
}
else
{
}


Array içinde bir karekter filtreleme yapılması gerekiyorsa aşağıdaki kod örneği kullanılabilir.

<?php
function filtre(&$value) {
 $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
    while($row = oci_fetch_assoc($parse)){

        array_walk_recursive($row, "filtre");

        $data[]=$row;
?>


Unutmayın güvenlik her şeyden önce gelir.



XAMPP Sunucu Konfigürasyonu (MySql+Apache+Php)

XAMPP sunucusu konfigürasyonunu kontrol panelden yaparken ini dosyasına yazma yetki sorunu ile karşılaşabilirsiniz.

XAMPP server error xampp-control.ini Access is denied

Bu hatayı açmak için kurduğunuz xampp klasörü içinde xampp-control.exe üzerine sağ klik yapıp Properties alanına girin, burada Compatibility sekmesine tıklayın. En altta Run this program as an administrator seçeneğini seçin ve Apply butonuna tıklayın. Windows artık konfigürasyon kaydederken, servis oluştururken veya startup'da servisleri başlatmak için yapılan konfigürasyonları sorunsuz yazacaktır ve bu özellikler kullanılabilir olur. 

Aşağıdaki videoda Windows 10 Xampp kurulumu ve ayarların nasıl  yapılacağı anlatılmaktadır.




PHPExcel Nasıl Kurulur

 PHP sayfanızın çıktısını excel dosyasına dönüştürmek istiyorsanız bunu kolayca ve sorunsuzca yapmanın bir yoluda PHPExcel kullanmaktır. Özellikle Türkçe karekterlerde sorun yaşamak istemiyorsanız donüştürdüğünüz dosyanın Excel 2007 ve sonrası bir sürüm olması gerekir. Excel 2006 ve önceki sürümlerinde xls formatı UTF-8 desteklemediğinden PHP standart kütüphanesi ile dosya oluşturmaya çalıştığınızda dosya da Türkçe karekterlerle ilgili sorun yaşayabilirsiniz. Bu sorunu aşmanın bir yolu var bunu daha önce yazmıştık fakat PHPExcel kullanarak XLSX dosyası oluşturduğumuzda herhangi bir karekter sorunu yaşamayız. İlk olarak siteden dosyaları indirmeliyiz.

https://github.com/PHPOffice/PHPExcel

Sisteminizin aşağıdaki durumları desteklediğinden emin olun.

* PHP versiyon 5.2.0 veya daha yüksek versiyon kullanmalısınız. 

* PHP extension php_zip yüklü olmalı

* PHP extension php_xml yüklü olmalı

* PHP extension php_gd2 yüklü olmalı


PHP Excel Nasıl Yüklenir. 

-------------------------

Tüm dosyaları yukarıda verdiğimiz linkten indirin.

Bilgisayarımızda root alanının /var/www/ olduğunu varsayalım. Bu bir linux dizinidir. Windows kullanıyorsanız bu dizini kendinize göre değiştirin. Ör: D:\XAMPP\htdocs gibi.

İndirdiğiniz klasördeki Classes klasörünü aşağıdaki gibi dizine kopyalayın.

/var/www/Classes/

/var/www/Classes/PHPExcel.php

/var/www/Classes/PHPExcel/Calculation.php

/var/www/Classes/PHPExcel/Cell.php


Test edin

---------------

İndirdiğiniz klasördeki Examples klasörünüde root dizinine kopyalayın.

/var/www/Examples/01simple.php

/var/www/Examples/02types.php

Yukarıda adı geçen dosyaları aşağıdaki gibi çalıştırın.

http://example.com/Examples/01simple.php

http://example.com/Examples/02types.php

Çalıştırdığınızda dosyanın bulunduğu dizinde yeni excel dosyası oluşacaktır. Örnekler içinde download edilebilir excel oluşturan scriptlerde bulunmaktadır.

Çalıştırdığınız dosyada hatalar alıyorsanız bu hatalar büyük bir ihtimalle dosyada bulunan {} karekterlerinden kaynaklanıyordur. Hatayı aldığınız dosyanın ilgili satırına giderek {0} {1} .... şeklinde süslü parantez içinde bulunan tüm sayı ve değişkenleri [0] [1]... şeklinde köşeli paranteze almalısınız.

PHPExcel son sürümü PHPSpreadsheet ismiyle yayınlanmaktadır ve composer ile yüklenebilir.

https://github.com/PHPOffice/PhpSpreadsheet


      

PHP Çıktısı Nasıl Excel Dosyasına Dönüştürülür (Oracle SQL)

 PHP kullanarak oracle database'e bağlanıp bir tabloyu çektikten sonra bu veriyi excel dosyasına yazdırmak istiyorsanız aşağıdaki kodu kullanabilirsiniz. Bu kod Türkçe karekter desteklemez, çıktınız Türkçe karekter içeriyorsa UTF-8 BOM satırını açmanız gerekir.

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');

$username = "username";               // Kullanıcı
$password = "password";               // Şifre
$database = "host:1521/NOR";      // Database adresi
 
$connectora = oci_connect($username, $password, $database, 'UTF8');
if (!$connectora) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$query = "SELECT * FROM TABLE";  //Sorgu

$parse = oci_parse($connectora, $query);
if (!$parse) {
    $m = oci_error($connectora);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($parse);
if (!$r) {
    $m = oci_error($parse);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}

function filterData(&$str){
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

$fileName = "Dosya_export_".date('Ymd') . ".xlsx";
ob_end_clean();
header('Content-Encoding:UTF-8');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; charset=UTF-8; encoding=UTF-8");
header('Content-Disposition: attachment; filename='.basename($fileName));
header('Content-Transfer-Encoding: binary'); //binary veya ascii
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=1');
header('Pragma: public');
flush(); 
$developersData = array();

//echo "\xEF\xBB\xBF"; // UTF-8 BOM

while($row = oci_fetch_assoc($parse)){       
$developersData[] = $row;

}
$showColoumn = false;
if(!empty($developersData)) {
  foreach($developersData as $developerInfo) {
if(!$showColoumn) {
  echo implode("\t", array_keys($developerInfo)) . "\n";
  $showColoumn = true;
}
else {

array_walk($developerInfo, 'filterData');
echo implode("\t", array_values($developerInfo)) . "\n";}
  }

exit;
?> 

PHP için Microsoft SQL Driver Nasıl Yüklenir

 PHP için Microsoft SQL Driver yüklemek için ilk olarak uygun driver microsoft sitesinden indirilir. Driver indirmek için aşağıdaki linki kullanabilirsiniz.

https://go.microsoft.com/fwlink/?linkid=2152937

İndirdiğiniz bu dosyayı bir dizine açın. içinde bulunan .dll dosyalarını PHP/ext klasörüne kopyalayın. Bilgisayarınıza kurulu bulunan PHP sürümüne uygun .dll dosyasını bulun. Bulduğunuz uygun dosyayı php.ini dosyasına aşağıdaki gibi ekleyin

extension=php_sqlsrv_74_ts_x64.dll

Burada 74 değeri kulandığınız php versiyonu ile aynı olmalıdır. x64 işlemci mimarinize uygun bir versiyon olmalıdır. Daha sonra web sunucunuzu yeniden başlatın. Sunucunuz IIS ve ya Apache olabilir. Daha sonra aşağıda linki bulunan ODBC driverını bilgisayarınıza kurun.

Microsoft ODBC Driver;

https://go.microsoft.com/fwlink/?linkid=2156851

Kurulumun gerçekleşip gerçekleşmediğini info.php sayfasından kontrol edebilirsiniz. Kurulum tamamlandığında bu sayfada "sqlsrv" isimli bir tablo oluşacaktır.

Not: info.php dosya içeriği <?php phpinfo(); ?> şeklinde olmalıdır.

      

Apache Active Directory NTLM Kimlik Doğrulama

 Apache web sunucusu ile Active Directory hesaplarından NTLM Kimlik Doğrulamasının nasıl yapılacağını inceleyeceğiz. Domainde bir Apache sunucunuz varsa domain kullanıcılarının kendi şifreleri ile local intranet sayfanıza erişmelerini istiyorsanız aşağıdaki gibi kurulumu yapabilirsiniz.

İlk olarak mod_authn_ntlm.so modülünü internetten indirin fakat dikkat edilmesi gereken bir durum var. Apache sunucunuz 32bit veya 64bit olabilir, bunu kontrol edip uygun versiyonu indirmelisiniz. Daha sonra indirdiğiniz dosyayı Apache/modules klasörüne kopyalayın.

Httpd.conf dosyasının içersine aşağıdaki satırı ekleyin.

LoadModule auth_ntlm_module modules/mod_authn_ntlm.so

Aşağıdaki iki modülün aktif olduğundan emin olun. (Satır önünde # olmamalı)

LoadModule ldap_module modules/mod_ldap.so

LoadModule rewrite_module modules/mod_rewrite.so

Aşağıdaki satırları da ekleyin. Web root'da /authenticate isimli bir klasör yoksa oluşturun. Bu klasör için şifreleme yapılacaktır.

RequestHeader unset X_ISRW_PROXY_AUTH_USER
<Location /authenticate >
    #AllowOverride None
    AuthName "Private location"
    AuthType SSPI
    NTLMAuth On
    NTLMAuthoritative On
    <RequireAll>
        <RequireAny>
            Require valid-user
            #require sspi-user EMEA\group_name
        </RequireAny>
        <RequireNone>
            Require user "ANONYMOUS LOGON"
            Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
        </RequireNone>
    </RequireAll>
    # use this to add the authenticated username to you header
    # so any backend system can fetch the current user
    # rewrite_module needs to be loaded then
    # while X_ISRW_PROXY_AUTH_USER is your header name
    RequestHeader set X_ISRW_PROXY_AUTH_USER expr=%{REMOTE_USER}
</Location>

Apache sunucusunu yeniden başlatın. Aşağıdaki kodu şifrelediğiniz klasörde bir php dosyasına yazın ve browser üzerinden sayfaya gidin.

<?php echo $_SERVER['REMOTE_USER']; ?>

PHP Güvenlik ve Performans Ayarları

Apache veya IIS üzerinde çalışan PHP için aşağıdaki özellikleri değiştirerek server performansını artırabilirsiniz.

memory_limit : Default "128M"  Bu, bir komut dosyasının ayırmasına izin verilen maksimum bellek miktarını bayt cinsinden ayarlar. Bu, bir sunucudaki tüm kullanılabilir belleği tüketmek için kötü yazılmış komut dosyalarının önlenmesine yardımcı olur. Bellek sınırı olmaması için bu yönergeyi -1'e ayarlayın. Bir int kullanıldığında, değer bayt cinsinden ölçülür. 

realpath_cache_size : Default "4M" PHP tarafından kullanılacak gerçek önbelleğinin boyutunu belirler. PHP'nin birçok dosya açtığı sistemlerde, gerçekleştirilen dosya işlemlerinin miktarını yansıtmak için bu değer artırılmalıdır. 

Boyut, depolanan yol dizelerindeki toplam bayt miktarını artı önbellek girişiyle ilişkili verilerin boyutunu temsil eder. Bu, önbellekte daha uzun yollar depolamak için önbellek boyutunun daha büyük olması gerektiği anlamına gelir. Bu değer, önbelleğe alınabilen farklı yolların sayısını doğrudan kontrol etmez. Önbellek girişi verileri için gereken boyut sisteme bağlıdır.

realpath_cache_ttl : Default "120"  Belirli bir dosya veya dizin için gerçek yol bilgilerinin önbelleğe alınacağı süre (saniye cinsinden). Nadiren değişen dosyalara sahip sistemler için değeri artırmayı düşünün.

https://www.php.net/manual/en/ini.core.php#ini.variables-order

PHP Şifre Güvenliği

PHP dosyaları içerisine kesinlikle password(şifre) yazmayın, passwordleri bilgisayarda başka bir yere konumlandırıp PHP dosyası içerisine bu şifreleri getirebilirsiniz. Ör sifreler.txt isimli bir dosya oluşturun ve şifreyi içine yazın. Sonra bu dosyadaki şifreyi bir değişkene atayın.

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

Yukarıdaki kod ile PHP dostanızda $plogin bilgisini şifre olarak kullanabilirsiniz. Bilgisayarı başkaları da kullanıyorsa bu işlem veri güvenliği için yeterli değildir. Bilgiyi aşağıdaki gibi şifreleyerek kullanabilirsiniz. Password bilgisini gizlemek için şifreleyin. Bu kod password bilginizi şifreler. Çıktıyı aldıktan sonra dosyayı silin fakat key bilgisini kaydetmeyi unutmayın.

<?php

$data = 'şifreyi_buraya_yazın';

$cipher = 'AES-128-ECB';

//key bilgisini istediğiniz gibi değiştirebilirsiniz.

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$encoded = openssl_encrypt($data, $cipher, $key); 

echo $encoded;

?>

Password bilgisini şifreledikten sonra E:\sifreler.txt dosyasına bu bilgiyi yazın. Sonra aşağıdaki kodu php dosyanıza ekleyin.

<?php

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

$cipher = 'AES-128-ECB';

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$decoded = openssl_decrypt($plogin, $cipher, $key); // çıktı: prototurk.com

echo $decoded;

?>


PHP if else

PHP kod içerisinde bir değişkenin değerine göre bazı alanları gösterip bazı alanları göstermeyebilirsiniz. Bu işlemler içinde geçerlidir. PHP ile aşağıdaki gibi bir değişkenin değerine bağlı olarak istediğiniz işlemler arasında tercih yapabilirsiniz.

<?php

if ((empty($_GET['degisken']))){

<Değişkene bir değer atanmadıysa işlenecek alan>

echo "Değişkene atanan bir değer yok";

} else {

?>

<Değişkenin bir değeri varsa işlenecek alan>

echo "Değişkene atanan bir değer var";

<?php }} ?>

      

PHP ile Oracle Veri Tabanına Nasıl Bağlanılır (Apache)

PHP üzerinden Oracle veri tabanına nasıl bağlanılacağına değineceğiz. XAMPP sunucusu üzerinde bulunan Apache serverdan faydalanarak Oracle database'e nasıl erişebiliriz?

İlk olarak PHP info sayfasına bakalım.

 http://localhost/dashboard/phpinfo.php

Bu sayfada bulunan iki değerin karşılığının ne olduğuna bakmalıyız

Architecture x86 veya x64 olacaktır.

Thread Safety enabled

Architecture değeri bendeki gibi x86 görünüyorsa 32bit bir PHP sürümüne sahipsiniz demektir. Thread Safety değeri mutlaka enable olmalıdır.

İlk olarak PHP.ini dosyası içinde aşağıdaki kaydın olup olmadığını kontrol edin açık değilse açın.

PHP 7.2den eski sürümler için

extension=oci8_12c

PHP 7.2'den sonraki sürümler için

extension=oci8_12c.dll

Ayrıca dosyaların bulunduğu dizinin php.ini dosyası içinde açık olduğundan emin olun.

extension_dir="D:\xampp\php\ext"

Oracle Instant Client Basic paketini internetten indirin.

http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

Windows x86 için 32bit, x64 için 64bit sayfasındaki "instantclient-basic-nt-12.2.0.1.0.zip" dosyasını indirmelisiniz. İndirdiğiniz dosyayı diskinizde bir klasör oluşturarak içine kopyalayın

D:\Oracle\instantclient_12_2

Bu klasörü sistem path bölümüne ekleyin

Control Panel -> System -> Advanced System Settings -> Advanced -> Environment Variables -> System Variables -> PATH. 

Name : Oracle Değer: D:\Oracle\instantclient_12_2

İnternetten indirdiğiniz instantclient_12_2 klasörünün içindeki *.dll dosyalarını D:\xampp\php ve D:\xampp\apache/bin klasörlerine kopyalayın.

Apache servisini restart ettiğinizde phpinfo dosyasına tekrar bakın. Burada OCI8 extension bölümünün açıldığını göreceksiniz. Bundan sonra test etmeniz yeterli. Aşağıdaki kod ile test edebilirsiniz.

<?php
 
error_reporting(E_ALL);
ini_set('display_errors', 'On');
 
$username = "hr";                  // Use your username
$password = "welcome";             // and your password
$database = "localhost/orclpdb";   // and the connect string to connect to your database
 
$query = "select * from dual";
 
$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}
 
$s = oci_parse($c, $query);
if (!$s) {
    $m = oci_error($c);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($s);
if (!$r) {
    $m = oci_error($s);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}
 
echo "<table border='1'>\n";
$ncols = oci_num_fields($s);
echo "<tr>\n";
for ($i = 1; $i <= $ncols; ++$i) {
    $colname = oci_field_name($s, $i);
    echo "  <th><b>".htmlspecialchars($colname,ENT_QUOTES|ENT_SUBSTITUTE)."</b></th>\n";
}
echo "</tr>\n";
 
while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "<td>";
        echo $item!==null?htmlspecialchars($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;";
        echo "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>

Kaynak : https://blogs.oracle.com/opal/installing-xampp-for-php-and-oracle-database



PHP include hatası

 PHP dosya içerisine herhangi bir PHP veya HTML dosya import edilirken hata alınıyorsa PHP.ini dosyası içinde işletim sistemine göre aşağıdaki konfigürasyonun yapılması gerekir.

Burada sadece bir işletim sistemi seçilmelidir. Kullandığınız işletim sisteminin altındaki kodun başındaki ; işaretini kaldırmalısınız. Aşağıdaki konfigürasyon windows içindir.

include_path bölümüne yazacağınız dizin IIS veya Apache'nin PHP çalıştıracağınız www dizini olmalı.

;;;;;;;;;;;;;;;;;;;;;;;;;

; Paths and Directories ;

;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"

;include_path=C:\XAMPP\php\PEAR

; Windows: "\path1;\path2"

include_path = ".;C:\XAMPP\htdocs"


PHP.ini dosyalarındaki tüm parametreler için;

https://www.php.net/manual/tr/ini.core.php#ini.include-path


PHP ile Web Server Üzerinden Ping Atma

Aşağıdaki PHP kodunu kullanarak server üzerinden istediğiniz bir web adresi veya IP adresine ping atbilirsiniz. Bu kod windows bir web server için yazılmıştır. Kod da bulunan değişkenlerin değerini değiştirerek veya başka bir yerden bu koda göndererek istediğiniz yere ping atabilirsiniz.

<?php
$host="127.0.0.1";
$count="10";
$timeout="1000";
$size="32";
$ttl="128";
$output=shell_exec('ping -i '.$ttl.' -l '.$size.' -w '.$timeout.' -n '.$count.' '.$host);

echo "<pre>$output</pre>"; 

if (strpos($output, 'out') !== false) {
    echo "Dead";
}
    elseif(strpos($output, 'expired') !== false)
{
    echo "Network Error";
}
    elseif(strpos($output, 'data') !== false)
{
    echo "Alive";
}
else
{
    echo "Unknown Error";
}
?>

IPv4 ve IPv6 ayrımı için koda ekleme yapmak gerekir, default haliyle IP versiyon 4 çalışacaktır.

Dikkat! Bu kod komutları windows command prompt üzerinde çalıştırdığından web server için güvenlik açığı oluşturabilir. Sadece kendi kullanımınız için kullanmayı tercih edebilirsiniz.

Google