Neden benim XAMPP üzerinde açıklama gerektiren ya da içeren bir değişken kullanmak mümkün duyuyorum?

3 Cevap php

Bazı eski php scriptler temizlik sırasında ben değişkenleri kullanmaya çalıştığınızda gerektiren / include ifadeleri ile bazı garip davranışları fark ettik.

Canlı sunucuda, aşağıdaki kod çalışıyor ..

<?php
$test = "http://localhost/elearning/trunk/mypage.php";
require "$test";
?>

.. Ama benim XAMPP kurulumu ((temel paket) versiyon 1.6.7) ben aşağıdaki hatayı alırsınız:

Uyarı: URL dosya erişimi C sunucu yapılandırmasında devre dışı:) [function.require] (gerektirir \ Documents and Settings \ kullanıcı adı \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ gövde \ test hat 22. php

Uyarı: uygun bir sarıcı C bulunamadı: failed to open stream: (http://localhost/elearning/trunk/mypage.php) [function.require] gerektirir \ Documents and Settings \ kullanıcı adı \ Desktop \ xampp-win32-1.6.7 xampp \ \ htdocs hattında 22 \ gövde \ test.php elearning \

Ölümcül hata:) [function.require] (gerektirir: gerekli Başarısız açılım 'http://localhost/elearning/trunk/mypage.php' (include_pathdaki = '; C:. \ Documents and Settings \ kullanıcı adı \ Desktop \ xampp-win32-1.6.7 \ xampp \ php \ pear \ ') C: \ Documents and Settings \ kullanıcı adı \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ hat 22 üzerinde gövde \ test.php

Ben + kopyalayıp yapıştırmak ise http://localhost/elearning/trunk/mypage.php (doğrudan hatadan) benim tarayıcıda içine mypage.php yükler. Bu bir benim yapılandırmada hata, ya da benim bir yaklaşım mı?

3 Cevap

Siz güvenlik nedeniyle bazı sunucularda http:// ile başlayan yolları kullanamazsınız. Ne yerine kullanmak istediğiniz bir dizin yoludur.

You can get your current directory path by doing something like
echo $_SERVER['DOCUMENT_ROOT'];

Bu sunucunun kök klasörden size dizin yolunu verecek. Yani malzeme gerektirmez / eklemek için kullanmak istediğiniz yoludur.


If you didn't quite understand that, try this.

Yollarının iki türü vardır:

World Wide Web Paths:
http://example.com/directory/file.php

Server Directory Paths:
/home/usr/www/site/html/

Dosyaları sunucunun sabit disk üzerinde bulunduğu Server dizin yoludur. Eğer dosyaları taşıyın sürece çok bilgisayarınızın sabit disk gibi, bu değişiklikleri asla. Öte yandan, World Wide Web Yolu (bir herkes web sitesine erişmek için kullandığı) ve Belge Kök, Mod yeniden yazar, işaret ve daha nerede olduğunu, ne kullanıyorsanız etki dayalı değiştirebilirsiniz.

Note: The Document Root is the top most directory that your server serves files from. So, if you had index.php in your document root, it would show up like this on the web: http://example.com/index.php.

PHP bir dosyayı arar zaman sunucu üzerinde çalışan, bunun nedeni, Server dizin yolu kullanır. Kullanıcı bilgisayardan çalışır Javascript, bir dosya için bakmak istiyor zaman sunucudan erişmek değil, çünkü, erişmek için World Wide Web yolunu kullanır.

Gerçekten orada bir yerlerde, bir şey mantıklı umuyoruz.

PHP böyle URL notasyonu kullandığınızda aynı sunucudan dahil olduğunuzu bilecek kadar akıllı değildir, bu yüzden ayrı bir sunucu (hangi tehlikeli olabilir) dosyaları kapma düşünüyor.

Sunucu yapılandırma ("URL dosya erişim sunucu yapılandırmasında devre dışı" hata mesajı ile belirgindir) bu harici dosyaları yükleme izin vermeyecek şekilde ayarlanır, bu yüzden başarısız oluyor.

Eğer aynı sunucuda konum bu yana, sadece gibi, göreli yolları kullanabilirsiniz:

require_once 'mypage.php'

Böyle bir yol kullanmak etmeyin ... göreli bir yol veya mutlak bir yol kullanabilirsiniz.

Örnek

require 'mypage.php'