【问题标题】:Make a path work both on linux and Windows使路径在 linux 和 Windows 上都有效
【发布时间】:2011-05-09 20:39:09
【问题描述】:

如何确定这条路径:

new Zend_Log_Writer_Stream(APPLICATION_PATH . '\logs\app.log')  

在 linux 和 windows 上都可以使用吗?

【问题讨论】:

    标签: php windows linux


    【解决方案1】:

    在 Linux 中,路径分隔符是 /。在 Windows 中,它是 \/。所以只要使用正斜杠就可以了。

    APPLICATION_PATH . '/logs/app.log'
    

    【讨论】:

    • 但是当我在 Windows 系统上打印我的路径时,我得到:K:\project345\application/logs/app.log
    • @sanders,这不是问题。 Windows 理解该路径。在 Windows 中,您可以在单个路径中混合使用正斜杠和反斜杠。
    • 我之前已经看到过这种说法,但它似乎与这里的信息相冲突:stackoverflow.com/questions/2410354/…
    • @Matt,这是一个不同的问题。在那个问题中,有人没有转义字符串中的反斜杠,\n 被转换为换行符。如果要使用反斜杠,则必须正确转义它们。不过,这是一个基本的 php 问题,因此与此没有直接关系。
    • 另请注意,该问题中的问题只是因为他们使用双引号而出现,其中\n 是这样解释的。如果您使用单引号(此处示例中的 OP 所做的),则 \n 不会以任何特殊方式解释,并且文字可以按原样正常工作。
    【解决方案2】:

    您也可以使用DIRECTORY_SEPARATOR 常量代替\/。 通常你会想要重新定义它以具有更短的名称,例如

    define('DS', DIRECTORY_SEPARATOR);
    $filename = APP . DS . 'logs' . DS . 'file.txt';
    

    【讨论】:

      【解决方案3】:

      如果您想交流您网站的两个或多个应用程序,这个技巧会为您提供很大的帮助

      $ Document_root = realpath ( \ filter_input ( INPUT_SERVER , ' DOCUMENT_ROOT '));
      

      这是将您的路线转换回真实路径,然后只需使用 DIRECTORY_SEPARATOR 在目录之间导航,而无需担心您的机器或 Web 服务器上安装的操作系统

      【讨论】:

        【解决方案4】:

        只需 realpath() 似乎就足够了

        Example #2

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          • 2013-08-29
          • 1970-01-01
          • 1970-01-01
          • 2013-10-14
          • 1970-01-01
          相关资源
          最近更新 更多