【发布时间】: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 一起使用——如果不能,为什么不呢—— ——这对我来说是个盲点。如果我弄清楚了,上面的代码可以在我的开发和生产服务器上运行。