【问题标题】:file_exists weird behaviour when called from a browser从浏览器调用 file_exists 奇怪的行为
【发布时间】:2014-08-12 07:31:39
【问题描述】:

我对@9​​87654321@ 有一种奇怪的行为:

从浏览器调用时:

  • file_exists() 将检测到我的桌面(在 Mac 上):/Users/myName/Desktop
  • file_exists() 不会检测到我桌面上的文件:/Users/myName/Desktop/any

我已经用 777 对任何目录进行了 chmod

chmod -R 777 /Users/myName/Desktop/any

当作为脚本调用时(第一行 = #!/usr/bin/env php),两个文件都会被识别。

你有关于这个问题的线索吗?

它与apache有关吗? (我已经修改了我的默认 apache conf 以获取尽可能小的文件,所以我可能也删除了重要的指令)还是与 mac 相关?

这是我的脚本:

<?php

var_dump(file_exists("/Users/myName/Desktop"));         // true
var_dump(file_exists("/Users/myName/Desktop/dd"));      // false

【问题讨论】:

  • 只是为了您的理解:不是browser 正在执行功能,而是始终在服务器上执行,或者准确地说是服务器上的 php 解释器。
  • 是的,没错。这提供了一个线索,为什么 php shell 脚本可以工作,并且问题与 apache 相关。

标签: php macos apache


【解决方案1】:

您的 HTTP 服务器可能在特定用户上运行。您的桌面受您的帐户保护。在 Mac OS 上,其他用户无法访问您的桌面。

结果 = 您的 http 服务器无法访问您的桌面,因为它正在另一个用户上运行 :)

如果您需要您的 http 服务器访问您的一些个人文件,请使用您的 ~/public 目录。

【讨论】:

  • 谢谢,就是这样。我改为将 apache 用户更改为我的 Os 帐户,并且 file_exists() 按预期工作。
猜你喜欢
  • 2018-05-20
  • 2014-01-22
  • 2015-07-08
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 2013-09-16
相关资源
最近更新 更多