OS-dostu bir şekilde yerel yoluna bakın nasıl?

2 Cevap

PHP bir işletim sistemi dostu bir şekilde dosyalara nasıl başvururum? Ben gibi bazı kod bakıyorum

<?php
require_once(dirname(dirname(__FILE__)).'/common/config.inc.php');

...

Ben bir Windows makine üzerinde çalıştırmak zorunda, ama yol hakkı ayrıştırmak değil ki:

PHP Warning:  require_once(C:\workspace/common/config.inc.php): failed to open stream: No such file or directory in C:\workspace\somescript.php on line 2
PHP Fatal error:  require_once(): Failed opening required 'C:\workspace/common/config.inc.php' (include_path='.;C:\php5\pear') in C:\workspace\somescript.php on line 2

O windows gibi değil ileriye eğik çizgi ile açmaya çalışıyor gibi görünüyor. Dosya C: \ workspace \ commonconfig.inc.php var. Doğru ileri-eğik çünkü komut sadece bulmak değil?

Require_once açıklamada, bazı os-dostu bir şekilde yolun son kısmını ifade olmamalı? Bunu nasıl yaparsınız?

PHP, Python ile benzer bir şey var os.path.normpath(path)? .. Bir yol gibi dize alır ve çalışan OS yol uygun döndürür ...

2 Cevap

Eğer kullanabileceğiniz birkaç şey vardır.

Bunun yerine bölü hardcoding, kullanmak sabit DIRECTORY_SEPARATOR yerleşik, ya da ben tercih olarak, kendi yapmak:

define('DS', DIRECTORY_SEPARATOR);

.. Bu kod biraz daha kompakt bir hale getirir.

Alternatif olarak, realpath() kullanın ve Unix-stili eğik çizgilerle ile tüm yolları ifade beri:

On windows realpath() will change unix style paths to windows style.
<?php echo realpath('/windows/system32'); ?>

The above example will output: C:\WINDOWS\System32

Ben bunu:

$dir = str_replace("\\", '/', dirname(dirname(__FILE__));
require_once $dir . '/common/config.inc.php';

Windows hem de Linux üzerinde çalışır. Bu durumda, neden sadece yapamaz rağmen:

require_once '../common/config.inc.php';

?