Nerede, Windows desteklemeyen PHP fonksiyonları bulabilirim?

3 Cevap php

PHP için benim normal geliştirme platformu Linux. Benim web sitesi için bir kırmızı şapka sunucusu kullanmak, benim şirket üretimi için kırmızı şapka ve Fedora kullanır, ve ben evde Ubuntu var. Ben daha mutlu olamazdı. Ne yazık ki, ben şimdi WAMP kullanarak Windows PHP çalışma zaman iyi bir anlaşma geçirmek için gerekli ediyorum.

Ben sürekli Linux Windows değil, hangi destekler şeyler bulma yaşıyorum çünkü bu talihsiz olduğunu söylüyorlar. Biz WAMP (Bu Windows için 5.3 portu ile sabit olmuştur) PHP önceki bir sürümünü kullandıysanız fark edince Geçen yıl, aslında bir projeyi erteledi. Bugün, ben sadece checkdnsrr Windows taşıdık, ve tüm pcntl kütüphane kullanılamaz halde olduğu öğrenildi.

Yani, benim soru şudur: Is there anywhere which tells me the current differences between Windows and Linux regarding PHP?

(Bu güzel olurdu ama) ben böyle açıklamalarda bulunanlar gibi huyların, here aramıyorum, ama oldukça fonksiyonları Linux altında kullanılabilir Windows altında mevcuttur olmayacak olan.

----------------------- DÜZENLEME -------------------------

checkdnsrr Windows altında 5.3 varolduğunu söylemek iki yorum / statments olmuştur. Teknik olarak, bu doğrudur. PHP işlevi yok demek değildir. Bu tüm yükler ya da sadece WAMP ile durum ise bilmiyorum, ama evet, o çalıştığını söyleyebiliriz ederken, işlevi Linux olduğu gibi çalışmaz.

--------------------- GÜNCELLEME ----------------------

Bu soruya mümkün iyi bir cevap var gibi görünmüyor, ama ben aşağıda önerilerden biri için bir çözüm sayesinde bulduk:

Üretim ortamında bu yerleştirin. BU ÜZERİNE güvenlik çeşit FORCE UNUTMAYIN.

 <?php print_r( get_defined_functions() ); ?>

Sonra dev ortamında bu çalıştırın. Bu yerel çevre için özel olan tüm fonksiyonları çıkış olacak.

$root = file_get_contents( "<path to server>/available.php" );
$root = preg_replace( "/\[[0-9]{1,4}\]\s=>\s/", ( '' ), $root );
$tmp  = '"internal" => array';
$root = explode( "\n", substr( $root, strpos( $root, $tmp ) + strlen( $tmp ) + 1 ) );
array_shift( $root );
array_shift( $root );
$internal = get_defined_functions();
$internal = $internal[ "internal" ];

function trim_array( array $root )
{
    $nroot = array();
    foreach( $root as $key=>$value )
    {
          $value = trim( $value );
          if( !preg_match( "/^[a-zA-Z_]*[aeiouy]+[a-zA-Z0-9_]*$/", $value ) && 
              !preg_match( "/^[a-zA-Z_]*(md5|crc|n12|str|sqrt|ch[a-z]?r|dl|tnt|ftp|png)[a-zA-Z_]*$/", $value ) )
          {
                //echo "\n $key ";
          }
          else
          {
             $nroot[] = $value;
          }
    }

    return $nroot;
}

$root     = trim_array( $root );
$internal = trim_array( $internal );

$diff = array_values( array_diff( $root, $internal ) );
foreach( $diff as $key => $fname )
{
      if( in_array( $fname, $root ) )
      {
            echo "[$key] => $fname <= foreign server only";
      }
      else
      {
            echo "[$key] => $fname <= local";      
      }
      echo "\n";
}

3 Cevap

İlk olarak, bazı çapraz platform sorunları destek eksikliği nedeniyle değil ama söz tuhaflıklarıyla, aklıma gelen o kötü dizin eğik çizgi yönü aklınızda. Veya sorun platformu ile ancak sunucu ile değil. Örneğin, Apache IIS HTTP düzeyde şeyler gibi görünüyor olsa bile ve TCP / IP düzeyinde OS-nötr olacağı çevresel değişkenleri vardır.

Bu notu:

  • PCNTL Unix süreç modeline dayalı, bu yüzden, Windows desteği olmazdı.
  • checkdnsrr 5,3 olarak Windows için desteklenir ve bir paket önce Windows'da bu uzantı ekleyerek için var edilmiştir.
  • Windows-only extensions (COM denetimi olmadan fikrimi sıçramaları bir varlık), ama benim tahminim değildir PHP.net bir liste olduğunu PHP aslında Unix (veya en azından POSIX) ve beri tasarlanan bu yana 85 web% tek olması gerektiğini haklısınız ama bir haykırış kadar, onların değil, (ben bu numarayı oluşur) Apache üzerinde.

Benim olsaydı, ben deli gitmek ve tüm uzantısı listesi sayfasını kazınarak ve sistematik olarak olanlar mevcut özel ya da değil hangi bir fikir edinmek için, "Windows" için intro sayfasını kontrol sahip bir komut dosyası yapmak istiyorum. Ama ben budala değilim, benim.

Oh, ve burada PHP ya Windows için gelişmekte olan veya geliştirmek için gidiyor asla kütüphanelerin bir listesi:

http://wiki.php.net/internals/windows/libs

Her fonksiyon için, function_exists diyoruz, mesela

function check_function(function_name)
{
    function_exists(function_name) or die(function_name . " missing");
}

check_function("checkdnserr");