Vet*_*ili 14 php config working-directory include
我花了几天时间研究互联网,但我找不到我理解并能够实现的答案.
我有一个网站,我想在其中使用include_once文件,并能够在localhost和实际服务器中正确查看网站.
我之前使用$_SERVER['DOCUMENT_ROOT']但它在localhost上不起作用,因此我很难更新并对网站进行更改.
我想要做的是创建一些config.php文件,在其中我可以告诉它根文件夹被调用htdocs或public_html"开始"从那里寻找文件.
或者还有其他任何方式我可以获得包含工作路径吗?
我已经看到了回复,例如dirname(__FILE__),__DIR__等等,但是他们从未解释过它是如何工作的,在代码中将它写在哪里等等.我有点厌倦了找到答案的一部分,然后在圈子里乱跑试着"填补"差距.我不是PHP专家,只是想通过使用它来让我的生活更轻松.
K-G*_*Gun 32
dirname(__FILE__)和__DIR__两个相同的,__DIR__带有PHP 5.3
这些用于表示"他们调用的文件的路径".
URL: http://localhost/test/a.php
DIR: --NIX
/var/www/test/a.php
--WIN
D:\lamp\www\test\a.php
// a.php's inside
<?php
echo __DIR__;
在linux上给你这个: /var/www/test
因此,如果您需要在所有项目中使用config参数,只需在config.php中定义它,并在需要包含文件名的位置使用它.
./
config.php
index.php
header.php
footer.php
/lib
foo.php
/tmp
bar.php
./config.php
define('ROOT', __DIR__ .'/');
./index.php include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');
即,使用它 tmp dir
./tmp/bar.php include_once(ROOT .'lib/foo.php');
UPDATE
// config.php
<?php
define("ROOT", __DIR__ ."/");
Run Code Online (Sandbox Code Playgroud)
所以,我们用它index.php来包括banner.php并banner.php等待./banners/banner.php;
// index.php and the very first line!
<?php
include_once("config.php");
?>
// some html stuff
// ...
<?php include_once(ROOT ."banners/banner.php"); ?>
// some more html stuff
// ...
Run Code Online (Sandbox Code Playgroud)
因此,您应该首先将config.php包含在您需要的位置.
我想,这是必要的......
UPDATE
所以你的问题不是PHP include系统,而是质疑,无论如何...... :)
如果您的图像路径正在改变(因此不固定),您可以这样做;
// config.php
define("ROOT", __DIR__ ."/");
define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost")
? "http://localhost/your_work_folder/"
: "http://your_site_name.com/"
);
// banner.php
<img src="<?php print HTTP; ?>images/banner.gif">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59511 次 |
| 最近记录: |