我正在尝试使用WordPress的$wp\\u文件系统解压位于wp-content/plugins
并将其放置在同一位置。不管我怎么尝试WordPress方法unzip_file()
始终返回true,就像它工作一样(但服务器上没有出现文件)。
这是我用来解压缩文件的代码:
WP_Filesystem();
$zip_from = get_home_path().\'wp-content/plugins/\'.$filename;
$zip_to = str_replace(ABSPATH, $wp_filesystem->abspath(), get_home_path().\'wp-content/plugins/\');
if(!unzip_file($zip_from,$zip_to))
{
return new \\WP_Error(\'writing_error\', \'Couldn\\\'t extract the plugin\\\'s ZIP file.\');
}
else exit("worked");
于是我跳进了
unzip_file()
方法位于WordPress\'
file.php
文件,并发现脚本停止在以下位置:
// Create those directories if need be:
foreach ( $needed_dirs as $_dir )
{
// Only check to see if the Dir exists upon creation failure. Less I/O this way.
if ( ! $wp_filesystem->mkdir( $_dir, FS_CHMOD_DIR ) && ! $wp_filesystem->is_dir( $_dir ) ) {
// THIS IS WHERE THE SCRIPT STOPS
return new WP_Error( \'mkdir_failed_ziparchive\', __( \'Could not create directory.\' ), substr( $_dir, strlen( $to ) ) );
}
}
当我检查时
var_dump($_dir)
它回来了
/www, 所以
$wp_filesystem->is_dir(\'/www\')
返回false。这种行为的原因可能是什么,路径似乎是正确的,它是文档中所述的完整路径。
PS:即使是官方文件中所述的最基本的例子unzip_file()
(https://codex.wordpress.org/Function_Reference/unzip_file#Example) 不起作用(我收到一条成功消息,但没有创建文件)。