问题描述
我正在尝试将插件远程安装到我的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 (将#修改为@)