【问题标题】:JFolder::create: Could not create directory JoomlaJFolder::create: 无法创建目录 Joomla
【发布时间】:2012-10-02 12:19:56
【问题描述】:

我在这里使用下面的 PHP 代码来创建一个特定的文件夹(如果它不存在)。我正在使用 joomla 2.5

$path = my/path/goes/here;
$folder_permissions = "0755";
$folder_permissions = octdec((int)$folder_permissions);
//create folder if not exists
if (!JFolder::exists($path)){
     JFolder::create($path, $folder_permissions);          
}

但是这段代码会抛出错误

JFolder::create: Could not create directory

这可能是什么原因?

【问题讨论】:

  • 检查您的 var $log_pathvar $tmp_path 在 configuration.php 中的路径
  • 您的 ftp 配置正确吗?

标签: php joomla joomla2.5


【解决方案1】:

我认为可能导致问题的两件事:

  1. 您忘记了octdec((int)$folder_permissions) 末尾的;
  2. 尝试删除整行$folder_permissions = octdec((int)$folder_permissions)

更新: 这是我用来创建一个简单文件夹的:

$destination = JPATH_SITE.'/'."modules/mod_login";
$folder_name = "new_folder";
JFolder::create($destination .'/'. $folder_name, 0755);

【讨论】:

  • @Dasun - 好的......你是如何定义路径的?使用 JPATH_SITE 还是 JURI?
  • JPATH_SITE 将 '\' 作为 DS 而不是 '/'。我能做些什么?例如:D:\wamp\www\pro/components/com_jink/resources/models/4/
  • @Dasun - 我已经用我之前扩展中使用的内容再次更新了我的答案。
【解决方案2】:

原因可能是什么? 很简单:尝试创建该目录的用户没有权限(或者您的 Joomla 已损坏)。

运行代码的用户可能是 www-data(在大多数 *nix/Apache 上)。 'nobody' 或 'apache' 也是可能的。 如果你有root权限试试这个:

1) 成为网络用户(例如 www-data)

2) 跳转到目录my/path/goes/here

3) 类型:mkdir mynewdir

而且您可能会发现用户没有足够的权限这样做。

【讨论】:

  • 你说的每一天都做了。但仍然没有运气
  • 运气不好?我没有发布解决方案,我是在告诉您如何手动/命令提示符测试您的操作。您的代码失败:您没有权限:所以找出原因。用户在目录中是否具有写权限?你检查了什么?
【解决方案3】:

在 Joomla 主目录下编辑您的 configuration.php 文件,更改:

发件人:

var $tmp_path = '/home/public_html/your_name/tmp';

收件人:

var $tmp_path = 'tmp';

tmp应该有777权限

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2014-01-28
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多