PHP App Windows makineye göç sonra çalışmıyor

9 Cevap php

LAMP sunucu üzerinde mükemmel çalışıyordu Bir PHP uygulama require veya include, Windows Server 2003 makineye göç sonra tüm dosyaları olamaz. Örneğin, aşağıdaki dosyayı verilmiştir:

   include("connectme.php");
  echo "==== $SERVER_NAME, $USER, $PASSWORD";
  $sql="SELECT id, model
FROM `products`
WHERE acc_code IS NULL
OR acc_code =0";
  $prodset=mysql_query($sql);


  while($prod=mysql_fetch_array($prodset,MYSQL_ASSOC))
  {
      echo $prod[id].",".$prod[model]."<br>";
  }

Bağlantı parametreleri dahil connectme.php dosyasında belirtilen olmasına rağmen dosya, bir MySQL bağlantı hatası ile başarısız olur. Ben include hattı ve sabit kod bağlantı parametreleri yorum ise, çalışır.

Herhangi bir fikir?

Teşekkürler

Update: connectme.php bağlantı parametreler tanımlanır ve verilen değerleri. Ama nedense, değişkenleri içeren dosyalar kapsamında görünmez. Ben bir satır eklerken echo değişkenleri $ SERVER_NAME, $ USER $ ŞİFRE hepsi boştu.

9 Cevap

Bazı dosyaları (connectme.php dahil) kısa etiketleri <? ?> kullanmak olduğu ortaya çıktı ve sunucu taze PHP ile yeni bir sunucu olduğundan (kısa etiketleri varsayılan olarak etkin değildir ki) yükleyin Bu yorum yapmadan connectme.php tüm kaynağını içermektedir. Oldukça zor!

Tüm yardım için teşekkür ederiz!

Ben senin dizin yapısı ne olduğunu bilmiyorum, ama bir test olarak göreli yolları denediniz mi?

Aynı dizinde ise:

include(".\\connectme.php");

??

İşte için dışarı bakmak için bir şey: windows diğer yönde gitmek ve yeni satır ile ilgili sorunlar da vardır eğik çizgi. Dizin yapısını belirlemek için yankı yapmak vb dosyaları da dahil olmak gibi diğer aklı testleri, deneyin

Dahil dosyanın izinlerini denetleyin. Okumak ve çalıştırmak için IUSR hesabı için erişim izni gerekir. Bunu yaptıktan sonra bir dahil olarak dosyaya erişmek mümkün olmalıdır.

Bu neredeyse kesin bir include_pathdaki konudur. Yollarla bir demet ayarlayabilirsiniz.

Sen bir sayfa oluşturabilirsiniz

<?php phpinfo(); ?>

içinde akımını görüntülemek için yolunu içerir. Sen php.ini yapılandırma dosyasında veya Apache kullanıyorsanız eğer .htaccess dosyasında, sayfanızda ini_set ile değiştirebilirsiniz.

Daha fazla burada görebilirsiniz:

http://us2.php.net/configuration.changes

Ben tarafından bu komut için isteğe bağlı değil çünkü gerektiren ve dosya mevcut değilse o sadece bir yapılandırma hatası değil bulunmaktadır değiştirin ediyorum.

require "connectme.php";

Bu connectme.php mysql_connect ve mysql_select_db içerir (?) Sonra connect koduna en azından bazı temel hata işleme eklemek ve mümkün mysql bağlantı kaynağa erişmek için yapmak. Mutlak minimum versiyon

<?php
$mysql = mysql_connect('...', '...', '...') or die(mysql_error());
mysql_select_db('...', $mysql) or die(mysql_error());

Ve sonra bu linki kaynak kullanımı ve ayrıca mysql_query için hata işleme ekleyin. Yine, minimal versiyonu

$prodset=mysql_query($sql, $mysql) or die(mysql_error());

Belki bazı yapılandırma simdiki bu deneyebilirsiniz include_path olmasını sağlamak için, varsayılan php için yolu dahil yazılmadan vardır:

set_include_path(get_include_path() . PATH_SEPARATOR . ".");

Sen) (dahil göreli bir yol geçmektedir. Bu geçerli çalışma dizinine göreceli. Belki cwd siz olmak beklediğiniz değildir. Bazı ekstra hata ayıklama çıktı açıklığa kavuşturmak olabilir.

<?php
echo '<div>Debug: __FILE__=', __FILE__, '</div>';
echo '<div>Debug: cwd=', getcwd(), '</div>';
echo '<div>Debug: glob(*.php)=', join(', ', glob('*.php')), '</div>';
require "connectme.php";

Eğer ana dosya içine connectme.php içeriğini kopyalamak ne olur?

sadece tahmin: nedeniyle linux ve pencereler arasındaki farklı dip çizginin biraz sorun olabilir?