['DOCUMENT_ROOT'] $ _SERVER belirtmek zorunda kalmadan dosyaları da dahil olmak üzere

3 Cevap settings

PHP Sürümü güncellemeden önce ben belge kök belirtmeden aşağıdaki gibi dosyaları dahil edebilmek için kullanılır:

<?php include '/absolute/path/to/files/file1.php'; ?>

Ancak ben şimdi şu şekilde aynı dosyayı içermelidir:

<?php include $_SERVER['DOCUMENT_ROOT'].'/absolute/path/to/files/file1.php'; ?>

Ne php.ini ayar eski davranışını geçersiz olabilir?

3 Cevap

Mutlak bir yol düz PHP 5.2.9 ile aynı şekilde çalışıyor olması gerekir dahil (5.3 denemedim, ama bunu değiştirmek gerekir). Eğer mutlak bir yolunu belirterek konum beri, include_path yönergesini bir ilgisi yoktur.

Eğer biraz daha bilgi verebilir misiniz? Eğer arka dahil ne olsun PHP sürümü, platform ve hata harika bir başlangıç ​​olacaktır.

Linux: RHEL 5 PHP: Sürüm PHP 5.2.9 Hata Mesajları Ben şunlardır olsun: PHP Warning: (/ conf / common.php) gerektirir: failed to open stream: Böyle bir dosya ya da / var / www / vhosts / DOMAIN dizin yok / httpdocs / tell-a-friend-fns.php hattında 63 PHP Fatal error: require ():. '/ conf / common.php' (include_pathdaki = 'gerekli Başarısız açılış :/ usr / share / armut :/ usr / lib hattında 63 / php :/ tmp ') in / var / www / vhosts / DOMAIN / httpdocs / tell-a-friend-fns.php

Application / var / www / vhosts / DOMAIN yaşayan, ve sizin için / conf / common.php arıyorsanız gibi Tamam, bu doğru görünüyor? Dosya içinde / conf aslında olup olmadığını bilmiyorum / veya / var / www / vhosts / DOMAIN / conf / öyle ise (ben verilen bilgilerle, ikincisi varsayalım). O in / conf / buysa, o Web sunucusu kullanıcı bu dizini okuyabilirsiniz emin olun. Değilse, senin için / var / www / vhosts / DOMAIN / httpdocs / conf / common.php bulunmaktadır değiştirin.

Daha da iyisi, common.php istenen sayfa için ana komut ile ilgili olarak yaşadığı yere bağlı olarak, include '../conf/common.php yapmak mümkün olabilir.

Bir lider "/" ile verilen herhangi bir yol dosya sistemi değil, Web sunucusu belge kök göre mutlak olduğunu unutmayın. Olmadan verilen herhangi bir yol "/" your betiğin (değil geçerli dosya) göreli göreli bir yol, olduğu varsayılır. Benim tahminim yoluna $ _SERVER ['DOCUMENT_ROOT'] prepending göreli bir yol mutlak yolunu değişiyor olmasıdır. Ben yükseltme sırasında kaldırılır var (sanal bilgisayarlar ile ortak) hapisteki bir ortamda faaliyet sürece neden mutlak bir yol, göreli bir yol ön yükseltme olarak hareket edecek hiçbir fikrim yok.

Sen php.ini yönergesine ihtiyacınız include_path

Bkz: http://us.php.net/manual/en/ini.core.php#ini.include-path

Ben her zaman gibi bir şey kullanabilirsiniz:

require( dirname( __FILE__ ) . '/../../subdir/somefile.php' );

Size mevcut dosyadan göreli bir yol verir, ancak (mevcut dosya üzerinde dirname kullanarak) mutlak bir yol giderir.