通过在PHP中返回一个目录来使用mkdir

时间:2014-06-07 14:49:05

标签: php

目前我正在使用../向前退一步创建一个目录

mkdir("../"."src/new");

这样可以正常工作但是这是另一种方式来提供完整路径而不是在任何地方使用../

4 个答案:

答案 0 :(得分:2)

尝试以下方法。 getcwd()将给出物理路径。

$path = getcwd().'your path';

答案 1 :(得分:1)

试试realpath。来自docs

  

realpath()展开所有符号链接并解析对它的引用   ' /./',' /../'和额外的' /'输入路径中的字符并返回   规范化的绝对​​路径名。

如果您想要当前目录的父目录,请使用:

//print out parent directory
$parent = dirname(getcwd());
echo $parent;

答案 2 :(得分:0)

您可以在所有页面中包含的页面中设置变量,例如$ fullpath =  $_SERVER["DOCUMENT_ROOT"]

答案 3 :(得分:0)

  

这样可以正常工作,但这是另一种提供完整路径的方式   然后到处使用../

是。只需在PHP中设置一个名为$BASE_PATH的PHP配置变量,然后将其添加到mkdir,如下所示:

$BASE_PATH = '/full/path/to/your/codebase/here/';

如果您想确定网站的基本路径,只需将此行代码放在网站的主索引中;例如在index.php

echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";

然后加载该页面。靠近顶部的地方将是这个文本:

  

您的路径是:/ full / path / to / your / codebase / here /

这将是您在检查此内容的任何系统上代码的基本路径。

然后可以将$BASE_PATH设置放在一个名为local.php的PHP文件中。然后,您只需确保所有PHP文件都在文件顶部附近有这样的行,如下所示:

require_once('local.php');

或者这个:

require_once('../local.php');

或者永远这样:

require_once('../../local.php');

是的,似乎您在配置文件中为../中的mkdir进行了交易,但好处是您只需在您的require_once次设置PHP文件。完成后,您只需在一个地方更改$BASE_PATH即可。不必担心。

现在,当您在代码中调用文件系统时,请执行以下操作:

mkdir($BASE_PATH . 'src/new');

这样的设置有什么好处,您可以通过更改$BASE_PATH来匹配您的本地环境,让您的应用在环境之间移植。

if ($app_environment == 'local') {
  $BASE_PATH = '/full/path/to/your/codebase/here/';
}
else {
  $BASE_PATH = '/var/www/your/remote/site/codebase/here/';
}

有些人会声称$_SERVER["DOCUMENT_ROOT"]这样会起作用,但实际情况是这种自动生成的方法在服务器到服务器之间无法正常工作。非常不一致的行为。最好设置一个$BASE_PATH,然后使用它而不是在其他任何事情上摸索。