如何在 PHP 中使用 file_put_contents 作为 Windows 绝对路径?

How to use file_put_contents in PHP for a Windows absolute path?

出于某些原因,我想将一些数据存储在可移动存储设备(即 U 盘)中。我安装了 WAMP 包,它有它的 .../www/ 文件夹,脚本可以在其中编辑文件等。我希望我的服务器能够 read/write 文件 from/to 另一个文件夹,它是在可移动存储中。

我已经尝试过相对路径并且可以看到 file_put_contentswww/ 之外的文件夹一起工作(可能是安全问题的原因..)。但是,我的可移动存储是Windows中的E:\驱动器,所以要写在那里我需要使用绝对路径。我尝试像

一样直接使用 Windows 绝对路径
file_put_contents("C:\existing\path\copied\from\explorer\new_file.txt","Stage 3, successfully written");

(首先在 C:\ 上区分是否因为路径不工作或因为写入另一个存储被禁止而发生写入失败)并且失败。

那么,有可能吗?我应该使用什么来代替 Windows 资源管理器中所写的路径?或者我应该使用另一个函数来实现这个?或者使用 Apache 配置给该路径一个别名?

重点是可移动存储应该在任何时候都可以安全地移动,除了 reading/writing 的那一刻。

PS 多亏了 ÁlvaroGonzález,我发现我只是忘记了 转义绝对路径中的 \ 符号 ,从资源管理器中复制,这就是直接写入失败的原因。

在您的 WAMP /www/ 目录中创建一个单独的目录,并在您需要的任何地方创建一个符号 link。一些好的阅读:http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

只是一个小语法问题:

var_dump("C:\existing\path\copied\from\explorer\new_file.txt");

... 打印如下内容:

string(46) "C:xisting\path\copiedromxplorer
ew_file.txt"

... 因为您不幸使用了双引号字符串和现有的 escape sequences:

  • \e 转义(十六进制 1B)
  • \f 换页(十六进制 0C)
  • \n 换行符(十六进制 0A)

一些有效的备选方案:

  • 'C:\existing\path\copied\from\explorer\new_file.txt'
  • "C:\existing\path\copied\from\explorer\new_file.txt"
  • "C:/existing/path/copied/from/explorer/new_file.txt"