PHP Dinamik akım dosya yolu temel dahil

3 Cevap php

Ben örnek için geçerli dosya yolunda .. dayalı bazı dosyaları dahil etmek için bir yöntem bulmak istiyorum:

Ben "website.com/templates/name1/index.php" var, bu yüzden don 'bu "index.php farklı derinliklerde birçok farklı dizinlere kullanacağı benzersiz bir dosya olması gerekir, bu yüzden kod evrensel yapmak istiyorum t Bu dosyanın içinde bir şey değiştirmek gerekir ..

Peki bu "index.php" yer alıyorsa

"website.com / templates/name1/index.php"

: Burada yer alan dosyayı içermelidir fazla

"website.com/content / templates/name1/content.php"

Başka bir örnek:

"website.com / templates/name2/index.php"

: Burada yer alan dosyayı içermelidir fazla

"website.com/content / templates/name2/content.php"

Engelli ve güvensiz çünkü çeşit hata .. .. Ayrıca ben "http:// sarıcı * allow_url_include = 0, sunucu yapılandırmasında devre dışı: include_once () [function.include-once] Uyarı *" istila etmek istiyor

Is there a way to achieve this? Thank you!

3 Cevap

Ben size geçerli dosya yolunda tabanlı dosyalar ile çalışmak için (o başında ve adının sonunda iki çizgi vardır) __FILE__ kullanın ve DIRECTORY_SEPARATOR sabitleri gerektiğini düşünüyorum.

Örneğin:

<?php
  // in this var you will get the absolute file path of the current file
  $current_file_path = dirname(__FILE__);
  // with the next line we will include the 'somefile.php'
  // which based in the upper directory to the current path
  include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'somefile.php');

, Windows ve Unix dizin ayırıcılar farklı ve interpretator üzerinde uygun değerini kullanır, çünkü DIRECTORY_SEPARATOR sabit kullanılması "/" (veya "\") semboller kullanarak daha güvenli Farklı platformlar.

Ben sadece basit bir şey yapmak istiyorum:

$dir = str_replace('website.com/','website.com/content/',__DIR__);
include "$dir/content.php";

Ve HTTP sarıcı sorun bu ile ilgisi görünmüyor. Eğer taşması ile ne demek istiyorsunuz? Genellikle dahil bir uzaktan yapmak istemiyorum.

Neden basit bir şekilde bunu yapamaz:

dirname(__FILE__); //Current working directory
dirname(dirname(__FILE__)); //Get path to current working directory

Ve sonra nihayet

$include_path = $dir_path . 'file_to_include.php';
include $include_path;