WordPressでproxy使う設定方法
FeedWordPressというプラグインを使おうと思ったら、proxyが越えれなくて困ってました。
Googleで調べてたら本家のTracにチケットが出ててパッチも公開されてました。
#4011 (add global proxy support in options) – WordPress Trac
編集するファイル
wp-config.php
下記コードを追加
<?php + //proxy settings + define('WP_PROXYHOST', 'your.proxy.host'); + define('WP_PROXYPORT', 'yourproxyport'); + define('WP_PROXYUSER', 'yourproxyusername'); + define('WP_PROXYPASS', 'yourproxypassword'); + define('WP_USEPROXY', false); //set to true if you use a proxy
class-snoppy.php
- 47〜50行目あたり
<?php - var $proxy_host = ""; // proxy host to use - var $proxy_port = ""; // proxy port to use - var $proxy_user = ""; // proxy user to use - var $proxy_pass = ""; // proxy password to use + var $proxy_host = WP_PROXYHOST; // proxy host to use + var $proxy_port = WP_PROXYPORT; // proxy port to use + var $proxy_user = WP_PROXYUSER; // proxy user to use + var $proxy_pass = WP_PROXYPASS; // proxy password to use
- 118行目あたり
<?php - var $_isproxy = false; // set if using a proxy server + var $_isproxy = WP_USEPROXY; // set if using a proxy server
class-IXR.php
- 500行目あたり
<?php - $fp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout); + if (!WP_USEPROXY) { + $fp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout); + } else { + $fp = @fsockopen(WP_PROXYHOST, WP_PROXYPORT, $errno, $errstr, $this->timeout); + }
functions.php
- 555〜558行目あたり
<?php - $fp = @fsockopen($host, $parts['port'], $err_num, $err_msg, 3); - if ( !$fp ) - return false; - + if (WP_USEPROXY) { + $fp = fsockopen(WP_PROXYHOST, WP_PROXYPORT); + if (!$fp) + return false; + fputs($fp, $head); + fputs($fp, "Proxy-Authentication: Basic " . base64_encode(WP_PROXYUSER . ":" . WP_PROXYPASS) . "\r\n\r\n"); + } else { + $fp = @fsockopen($host, $parts['port'], $err_num, $err_msg, 3); + if ( !$fp ) + return false; + fputs( $fp, $head ); + }
- 560行目あたり
<?php - fputs( $fp, $head );
- 874〜883行目あたり
<?php - $fp = @fopen( $uri, 'r' ); - if ( !$fp ) - return false; - - //stream_set_timeout($fp, $timeout); // Requires php 4.3 - $linea = ''; - while( $remote_read = fread($fp, 4096) ) - $linea .= $remote_read; - fclose($fp); - return $linea; + if (WP_USEPROXY) { + $proxy_fp = fsockopen(WP_PROXYHOST, WP_PROXYPORT); + if ( !$proxy_fp ) + return false; + fputs($proxy_fp, "GET $uri HTTP/1.0\r\nHost: ".WP_PROXYHOST." \r\n"); + fputs($proxy_fp, "Proxy-Authentication: Basic " . base64_encode(WP_PROXYUSER . ":" . WP_PROXYPASS) . "\r\n\r\n"); + while(!feof($proxy_fp)) + $proxy_cont .= fread($proxy_fp,4096); + fclose($proxy_fp); + $proxy_cont = substr($proxy_cont, strpos($proxy_cont, "\r\n\r\n")+4); + return $proxy_cont; + } else { + $fp = fopen( $uri, 'r' ); + if ( !$fp ) + return false; + $linea = ''; + while( $remote_read = fread($fp, 4096) ) + $linea .= $remote_read; + fclose($fp); + return $linea; + }
- 908行目あたり
<?php + if (WP_USEPROXY) { + curl_setopt ($handle, CURLOPT_PROXY, WP_PROXYHOST . ":" . WP_PROXYPORT); + curl_setopt ($handle, CURLOPT_PROXYUSERPWD, WP_PROXYUSER . ":". WP_PROXYPASS); + }