【问题标题】:localhost permissions with php mkdir()?使用 php mkdir() 的本地主机权限?
【发布时间】:2012-02-11 01:21:31
【问题描述】:

为了准备稍后迁移到生产服务器,我正在使用此代码 (php) 创建一个新目录来存储用户的文件:

function createNewUserFolder($newUserName)
{
    $siteRoot = "http://" . $_SERVER['HTTP_HOST'] . "/myWebsite/";
    $newUserSubfolder = $siteRoot . $newUserName;

    if (!mkdir($newUserSubfolder, 0755))
    {
        echo "PROBLEM...";
    }
}

我尝试了 0644 权限但无济于事——执行此操作时我只会收到“问题...”。我检查了包含完整路径的字符串,它是正确的 - “http://localhost/myWebsite/myNewUserSubfolder”。

所以我怀疑上述字符串的“http://localhost/myWebsite/”部分是问题所在。但是我不明白为什么——毕竟这是在我的网络服务器上运行的 php 代码,那么为什么我的 php 代码不能在我的网络服务器上创建一个文件夹?

【问题讨论】:

  • ls -al 在 $siteRoot 上的输出是什么?网络服务器的用户叫什么? (尝试回显whoami
  • 尝试使用真实目录 ex: /var/www/myWebsite/ 和 mkdir 而不是 http:// 看看是否可行
  • ls -l 在我的 Windows 机器上不受支持,并且命令行中的 whoami 会产生我在此 Windows (Vista) 机器上设置我的用户帐户时创建的用户名。另外——我将尝试完全限定的路径,但我的问题是——应该我可以在调用 mkdir() 时将 http 与 /localhost/myWebsite 一起使用——如果不能,为什么不呢—— ——这对我来说是个盲点。如果我弄清楚了,上面的代码可以在我的开发和生产服务器上运行。

标签: php localhost mkdir


【解决方案1】:

对于 Windows 环境,您可能想做这样的事情

$siteRoot = "c:\\path\\to\\siteroot\\myWebsite/";
$newUserSubfolder = $siteRoot . $newUserName;

if (!mkdir($newUserSubfolder, 0755))
{
    echo "PROBLEM...";
}

试试看

如果您的服务器上支持 FTP,请尝试使用 FTP 在此处阅读更多信息http://php.net/manual/en/book.ftp.php

【讨论】:

  • Jaspreet,和 Gurbaksh Chahal 有关系吗?真的很酷的家伙,他在距离我 10 分钟路程的圣何塞(硅谷)长大。感谢您在这里的建议,也感谢@Vyktor,对我来说,SO 中反复出现的主题是希望接受多个答案,但我不能,所以我向上箭头,我也非常感谢您的帮助
  • 我听说过很多关于 GC 的事情。我会说,如果他在 about.me 上再等 1 天,那么我将拥有该域名 :) 所以现在我得到了 chahal.me :)。是的,他似乎是一个很酷的人,很想有一天见到他。我祝他一切顺利,并希望有一天能见到他。但截至今天,除了分享我们的姓氏之外,我真的不认识他:(。顺便说一句,我住在澳大利亚墨尔本。我很高兴我对你有任何帮助。顺便说一句,我还经营一个博客,这里是 @987654322 的网址@. 支持 chahals :) tah!再次-jas
【解决方案2】:

您正在尝试通过 http 协议在“远程服务器”上创建目录,只需尝试在 linux shell 中进行操作:

 mkdir "http://google.com/mydir"

Http 服务器无法知道是你和 AFAIK,它甚至不支持直接创建目录(通过没有脚本的 http 协议)。

无论如何,mkdir 仅适用于所有 file system functions 中隐含的 file:// 协议(或包装器)。

因此,当您使用参数/my/path 运行mkdir() 时,将评估为file:///my/path(它可以正确处理)。对于http://...,它只是不受支持的协议。

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2018-06-09
    • 2011-04-15
    • 1970-01-01
    • 2017-02-09
    • 2011-12-23
    相关资源
    最近更新 更多