【问题标题】:Extract main directory name of php application提取php应用程序的主目录名
【发布时间】:2020-10-07 12:08:29
【问题描述】:

我只想获取我的项目的应用程序名称,对于 例如我的应用程序名称(目录名称)是:MERP 应用程序是:C:/xampp/htdocs/MERP 所以我只需要得到名字 MERP

还有另一种使用定义语法将应用程序名称存储在配置文件中的方法和 包含在所有文件中,但我的方案卡在这一步 仅限。

【问题讨论】:

  • 基本名称?类似于basename(__DIR__),但取决于您的项目结构。 php.net/manual/en/function.basename.php
  • 如果您对包含过敏,可以使用环境变量。
  • basename(__DIR__) 应该只返回调用它的文件的目录名而不返回完整路径。所以如果你在 /path/to/htdocs/MERP/foo.php 中调用它,它应该返回 MERP。
  • 是的,问题是我需要从不同级别的目录(子目录和子子目录)访问应用程序。
  • 在 MERP 目录内和下?

标签: php directory separator


【解决方案1】:

您好,您可以使用它来获取 MERP 字典名称,就在下面这个 php 代码

basename(__DIR__);

如果您想获取和输出,可以在该代码之前使用echo

如果您在父目录中有多个字典,请使用此代码:

<?php


$rootAfter = $_SERVER['REQUEST_URI'];
$dir_array = parse_url($rootAfter);
preg_match('@/(?<path>[^/]+)@', $dir_array['path'], $x);
$folderName = $x['path'];
echo $folderName;


?>

更多详情请访问php.net

【讨论】:

  • 我无法使用此代码,因为我正在访问来自不同目录级别的文件,例如 MERP/module_hr/reports 和另一个级别,例如 MERP/module_sales/reports/admin
  • 您好,请说明您使用的是网络服务器还是本地主机
  • 我两个都用。
  • 效果很好!!!但想知道是否有更短的代码,因为此代码将在应用程序的每个页面上运行。谢谢
  • 你可以用它做一个函数
【解决方案2】:

对于文档根目录下的目录下的 PHP 文件:

你可以试试:

strtok(str_replace(realpath($_SERVER['DOCUMENT_ROOT']), '', __FILE__), DIRECTORY_SEPARATOR);

但是,这仍然很脆弱。我建议不要这样做,更喜欢带有常量声明的设置/引导文件,以及常见功能的可能位置。

Php 允许在您的脚本之前应用一个公共文件,请参阅auto_prepend_file 指令。如果您想超越几个常量并保存单个文件中的需求行,这可能会很有用。

如果您只希望少数常量,请考虑环境变量。

【讨论】:

  • 结果为空。
  • @Moussa 好尴尬,我已经修正了参数顺序。
  • 它显示了完整的 url 路径。我只需要提取 htdocs 之后的主应用程序目录名称 ...
  • @Moussa 你是怎么运行的?通过命令行还是通过 XAMPP?
  • 通过xampp运行
【解决方案3】:

对于这种工作,我通常使用getcvd(),例如,apache vhost 指向 public/index,它将返回 full/path/to/merp/public。 从这个值你可以使用dirname

如果你不使用“public”目录,getcvd 就足够了。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 2011-07-28
    • 2021-04-25
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多