Apache / PHP:使用Windows绝对路径的file_put_contents? (可能?)

时间:2016-04-19 13:51:43

标签: php windows apache wampserver

由于某些原因,我希望将一些数据存储在可移动存储(即USB-stick)中。我安装了WAMP软件包并且它有... / www /文件夹,其中脚本可以编辑文件等。我希望我的服务器能够从/向可移动存储中的另一个文件夹读/写文件

我已经尝试过相对路径,可以看到file_put_contents适用于www/之外的文件夹(可能导致安全问题......)。但是,我的可移动存储是Windows中的E:\驱动器,因此要在那里写,我需要使用绝对路径。我试图直接使用Windows绝对路径,如

file_put_contents("C:\existing\path\copied\from\explorer\new_file.txt","Stage 3, successfully written");

(首先在C:\上区分,如果由于路径不起作用或因为写入另一个存储被禁止而发生写入失败)并且失败。

那么,它有可能吗?我应该使用什么而不是在Windows资源管理器中编写的路径?或者可能是我应该使用另一个功能来实现这一目标?或者使用Apache配置为该路径提供一些别名?

关键是可移动存储应该可以随时安全地移除,除了读/写时。

PS感谢ÁlvaroGonzález,我认为我只是忘记了逃避我的绝对路径中的\符号,从资源管理器中复制,这就是为什么写入它直接失败。< / p>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

只是一个很小的语法问题:

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

...打印如下内容:

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

...因为你已经不幸使用双引号字符串和现有的escape sequences

  • \e逃脱(hex 1B)
  • \f formfeed(hex 0C)
  • \n换行符(hex 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"