【问题标题】:PHP on windows path comes up with backward slashWindows路径上的PHP带有反斜杠
【发布时间】:2013-01-22 12:08:23
【问题描述】:

试图在我的 Windows 操作系统上设置一个 php 网站。我从某人那里得到的 PHP 代码有类似

的行
$base_path = realpath('./../').'/'; 

这以 c:\abc\xyz/ 之类的字符串结尾

我需要在 Windows 上进行哪些设置才能强制它与 / 一起提供。我读到了DIRECTORY_SEPERATOR,但有很多地方我需要担心,因此如果我能拥有它,以便真正的路径出现/,它将对我有很大帮助。

【问题讨论】:

    标签: php windows path


    【解决方案1】:

    Timothy 答案的变体,它使用 DIRECTORY_SEPARATOR 常量而不是条件来简化函数。

    function platformSlashes($path) {
        return str_replace('/', DIRECTORY_SEPARATOR, $path);
    }
    
    $path = "/some/path/here";
    echo platformSlashes($path);
    

    【讨论】:

      【解决方案2】:

      反斜杠是 Windows 平台上的目录分隔符。但是根据我的理解和经验,在解析路径时,您的 PHP 脚本仍然可以使用正斜杠。因此,您可以使用正斜杠编写所有代码,而不必担心。只有在向用户显示路径时,前/后斜杠才真正重要,例如在安装程序/安装程序脚本中(站点的大多数用户不需要了解目录结构,也不需要关心服务在哪个平台上运行)。您可以创建一个显示函数来识别平台并根据需要替换斜杠,然后在显示它们之前通过它传递路径。以下是我建议的示例,虽然我还没有测试过。

      <?php
      function platformSlashes($path) {
          if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
              $path = str_replace('/', '\\', $path);
          }
          return $path;
      }
      
      $path = "/some/path/here";
      echo platformSlashes($path);
      

      【讨论】:

        【解决方案3】:

        只需对您拥有的字符串进行替换:

        $base_path = realpath('./../') . '/';
        $base_path_mod = str_replace('\\', '/', $base_path);
        

        【讨论】:

          猜你喜欢
          • 2012-11-16
          • 2020-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-04
          • 2015-03-24
          相关资源
          最近更新 更多