【问题标题】:To Create Multiple Directories using mkdir() in Php在 PHP 中使用 mkdir() 创建多个目录
【发布时间】:2016-11-19 06:53:35
【问题描述】:

我正在开发一个社交网络网站,注册时会在其中创建多个目录。这是我正在使用的代码:

$path = "fb_users/Organization/" . $user . "/Profile/";
$path2 = "fb_users/Organization/" . $user . "/Post/";
$path3 = "fb_users/Organization/" . $user . "/Cover/";
mkdir($path, 0, true);
mkdir($path2, 0, true);
mkdir($path3, 0, true);

代码在我的本地主机上运行良好,但是当我在 cPanel 主机上使用相同的代码时,代码只会创建 fb_users/Organization/fb@abc.com(让 $user = fb@abc.com)。它不会再创建三个文件夹。有人能帮我解决这个问题吗?

代码前的目录:

/fb_users/Organization

在本地主机上运行代码后:

/fb_users/Organization/fb@abc.com/Cover
/fb_users/Organization/fb@abc.com/Post
/fb_users/Organization/fb@abc.com/Profile

使用 cPanel 在主机上运行相同的代码:

/fb_users/Organization/fb@abc.com (only this directory is created)

【问题讨论】:

  • 听起来像是新创建的文件夹的权限问题。对新创建的文件夹执行 fileperms() 的结果是什么?
  • mode = 0 表示该目录不可写,因此无法创建子目录。
  • 并且模式在 Windows 机器上被忽略,这就是它在 localhost 而不是 cPanel 主机上工作的原因。
  • 我不明白这与 phpMyAdmin(这是一个用于管理 MySQL 数据库安装的应用程序)有什么关系。

标签: php cpanel


【解决方案1】:

当您在 Unix 服务器上指定 mode = 0 时,它将创建顶级目录 /fb_users/Organization/fb@abc.com,没有读写权限,即使对于所有者也是如此。所以它没有创建子目录的权限。使用0700 授予所有者完全权限,但不允许其他任何人访问它。

mkdir($path, 0700, true);
mkdir($path2, 0700, true);
mkdir($path3, 0700, true);

【讨论】:

  • 谢谢!正常工作!
【解决方案2】:

尝试将第二个参数更改为 0700。

编辑:Barmar 用更好的解释打败了我。

【讨论】:

  • 明白了!正常工作!
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
相关资源
最近更新 更多