您如何知道在PHP require_once()语句中使用的正确路径 - php

我想在几乎所有其他php文件中都包含一个Web应用程序的根目录中的config.php文件。因此,大多数人都这样写:

require_once("config.php");

有时

require_once("../config.php");

甚至

require_once("../../config.php");

但是我从来没有第一次做对。当读取这些文件之一时,我无法弄清楚哪个php将被视为当前的工作目录。显然不是在其中包含require_once()调用的文件所在的目录,因为我可以在同一目录中拥有两个文件,这些文件的config.php路径不同。

我如何遇到一种正确的路径来刷新页面但ajax可以更新页面的一部分的情况,在require_once()语句中需要另一条指向config.php的路径;

有什么秘密?从何处评估该路径?

射击,我担心这不是一个普遍的问题-这是在Windows上运行的Apache 2.2.8和PHP 5.2.6下发生的。

参考方案

PHP的当前工作目录是被调用脚本文件所在的目录。如果您的文件如下所示:

/A
   foo.php
   tar.php
   B/
       bar.php

如果调用foo.php(例如:http://example.com/foo.php),则工作目录将为/ A /。如果调用bar.php(例如:http://example.com/B/bar.php),则工作目录将为/ A / B /。

在哪里变得棘手。让我们说foo.php是这样的:

<?php
require_once( 'B/bar.php' );
?>

而bar.php是:

<?php
require_once( 'tar.php');
?>

如果我们调用foo.php,则bar.php将成功调用tar.php,因为tar.php和foo.php位于同一目录中,而该目录恰好是工作目录。如果改为调用bar.php,它将失败。

通常,您会在所有文件中看到:

require_once( realpath( dirname( __FILE__ ) ).'/../../path/to/file.php' );

或使用配置文件:

// config file
define( "APP_ROOT", realpath( dirname( __FILE__ ) ).'/' );

使用以下文件处理其余文件:

require_once( APP_ROOT.'../../path/to/file.php' );

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…