【问题标题】:Can't create a folder with mkdir无法使用 mkdir 创建文件夹
【发布时间】:2010-11-22 09:46:04
【问题描述】:

环境信息:
*Windows Vista
*PHP 5.2.9-2

我正在做一个项目。假设它的名称只是“项目”。我的用于用户交互的 php 文件可以在

找到

项目/文件.php

现在,我有一个数据库和一些地图,其中通常包含类和配置文件。还有一张供用户使用的地图,我在其中存储他们可能上传的图像。例如:

项目/文件/用户/0/profilePic.jpg

数字对应数据库中的user_id。

我的register.php 文件包含这行代码:

mkdir('/files/Users/'.$id)

$id变量是数据库中最大的id号加1。

但这行不通。我检查了文件夹,我有读写权限(我是我机器上的管理员)。

我做错了什么?

注意:告诉我有更好的组织方法的权利保留给那些可以给我有用的答案的人。 :P

【问题讨论】:

    标签: php windows directory mkdir


    【解决方案1】:

    这个怎么样?

    mkdir('c:/files/Users/'.$id)
    

    【讨论】:

    • 嗯,它成功了,但问题仍然存在:为什么前面的代码不起作用?
    • 嘿,在windows中你必须指定盘符,系统不会做任何假设。
    • 很明显为什么它不起作用,因为路径“/files/Users/”在 php+windows 中不存在。起始斜线表示绝对路径,在 Windows 上不存在。如果您想要相对路径,只需删除第一个斜杠即可。
    【解决方案2】:

    几种可能性:

    1. 丢失第一个 / 因为它给出了一个绝对路径,而您正在寻找一个相对路径 -- 所以 mkdir('files/Users/'.$id)
    2. 文件/用户是否已经存在(即,是否已经存在用户 0、用户 1 等)?如果没有,您需要先创建它们或执行 mkdir('files/Users/'.$id, 077, true) 以递归创建目录。

    【讨论】:

    • “文件/用户”已经存在。所有用户已经存在(使用 phpMyAdmin 进行数据库管理)
    • 相对路径与绝对路径,就是这样。
    【解决方案3】:

    在 Windows 中,路径不以“/”开头,而是以驱动器号开头。只需删除第一个斜线(因此 '/files/users/' 变为 'files/users/')。

    还有,马克说了什么。

    【讨论】:

      【解决方案4】:

      PHP 声明它在系统之间转换 / 时做出了最好的尝试。通过这样做:

      mkdir('/files/users');
      

      让 PHP 误以为它在 *NIX 系统上。通过将root设置为c:,它现在能够正确解析参数并推断它是一个windows系统

      【讨论】:

      • 所以 PHP 不会尝试检测它运行在哪种系统上,而是尝试根据您传递给 mkdir 的参数进行猜测?
      • 一个简单的答案是肯定的。它已经知道它在什么操作系统上运行,因为它已经符合系统。
      猜你喜欢
      • 1970-01-01
      • 2022-12-03
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多