PHP与CURL Wordpress远程插件安装程序问题

问题描述

我正在尝试将插件远程安装到我的wordpress网站。我尝试了一些操作,但是wordpress给出错误消息“请选择文件”,我已经使用curl发布了插件文件。我需要帮助!

我认为问题在于发送包含multipart / form-data的文件。

<?php
error_reporting(E_ALL);
ini_set('display_errors','1');

$username = 'kullaniciadi'; //wp user name
$password = 'sifre'; //wp password
$url = "url"; /// without / at the end
$cookie = "cookie.txt";
$visitHost = $url . '/wp-admin/plugin-install.php?tab=upload';
$postHost =  $url . '/wp-admin/update.php?action=upload-plugin';
$postData = "log=$username&pwd=$password&wp-submit=Log+In&redirect_to=$visitHost";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url . "/wp-login.php");
curl_setopt($ch,CURLOPT_COOKIESESSION,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($ch,CURLOPT_COOKIEJAR,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($ch,CURLOPT_TIMEOUT,60);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_REFERER,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);
curl_setopt($ch,CURLOPT_POST,1);
$content = curl_exec($ch);
$matches = array();
$wponce = "";
if (preg_match('#id="_wpnonce" name="_wpnonce" value="(.*)" /><input type="hidden"#',$content,$matches)) {
    $wponce = $matches[1];
}

$matches = array();
$wpreferer;
if (preg_match('#<input type="hidden" name="_wp_http_referer" value="(.*)" />#',$matches)) {
    $wpreferer = $matches[1];
}
curl_setopt($ch,$postHost);
$filename = "ext.zip";
$mimetype = "zip";
$cfile = curl_file_create($filename,$mimetype,basename($filename));
$postData2 = array(
    'pluginzip' => $cfile,'_wp_http_referer' => $wpreferer,'_wpnonce' => $wponce,'install-plugin-submit' => 'Install Now'
);

curl_setopt($ch,http_build_query($postData2));
curl_setopt($ch,1);
$content = curl_exec($ch);
curl_close($ch);

echo $content;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)