You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2本地Ubuntu环境下WordPress安装插件报错求助

WSL2 Ubuntu环境下WordPress插件安装语法错误问题

错误详情

安装插件时触发语法错误,报错信息:

Parse error: syntax error, unexpected '$file' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /mnt/c/projects/wordpress/wp-admin/includes/class-wp-filesystem-direct.php line 177

对应第177行代码:

$file = trailingslashit( $file );

相关函数代码

出错的chmod函数完整代码如下:

/**
     * Changes filesystem permissions.
     *
     * @since 2.5.0
     *
     * @param string    $file      Path to the file.
     * @param int|false $mode      Optional. The permissions as octal number, usually 0644 for files,
     *                             0755 for directories. Default false.
     * @param bool      $recursive Optional. If set to true, changes file permissions recursively.
     *                             Default false.
     * @return bool True on success, false on failure.
     */
    public function chmod( $file, $mode = false, $recursive = false ) {
        if ( ! $mode ) {
            if ( $this->is_file( $file ) ) {
                $mode = FS_CHMOD_FILE;
            } elseif ( $this->is_dir( $file ) ) {
                $mode = FS_CHMOD_DIR;
            } else {
                return false;
            }
        }

//      if ( ! $recursive || ! $this->is_dir( $file ) ) {
//          return chmod( $file, $mode );
        }

        // Is a directory, and we want recursive.
        $file     = trailingslashit( $file );
        $filelist = $this->dirlist( $file );

        foreach ( (array) $filelist as $filename => $filemeta ) {
            $this->chmod( $file . $filename, $mode, $recursive );
        }

        return true;
    }

已尝试的解决方法

  • 修改Apache的php.ini及WordPress配置中的max_execution_time限制
  • 设置define('fs_method', 'direct')
  • 调整文件夹所有者:执行命令sudo umount /mnt/c && sudo mount -t drvfs C: /mnt/c -o metadata后修改所有者
  • 配置文件夹权限:创建/etc/wsl.conf文件并设置权限为文件夹775、文件644,配置内容:
    [automount]
    enabled=true
    options="metadata"
    mountFsTab = false
    

当前临时解决方式

仅通过注释以下代码段才能成功安装插件:

/*
        // Is a directory, and we want recursive.
        $file     = trailingslashit( $file );
        $filelist = $this->dirlist( $file );

        foreach ( (array) $filelist as $filename => $filemeta ) {
            $this->chmod( $file . $filename, $mode, $recursive );
        }

        return true;
    }
*/

需求

寻求该语法错误的根源及更规范的解决方式。

内容的提问来源于stack exchange,提问作者qo0d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:02:31