常常被WordPress的一些莫名其妙的问题搞得晕头转向, 本地测试一切正常,可上传到服务器却又是这样那样的问题,wordpress更新时,会能过curl抓取api.wordpress.org的内容, 问题就在这个,一些低版本的php,curl抓取不到https的内容,导致问题出现,更可恶的是,问题出现,页面无任何提示信息, 完全不知道问题出在什么地方. 解决方案:修改文件 wp-include/http.php 找到 wp_http_supports函数,直接直接返回false,这个在进行curl访问时,始终采用http方式. function wp_http_supports( $capabilities = array(), $url = null ) { return false;//添加这句代码 $objFetchSite = _wp_http_get_object(); $capabilities = wp_parse_args( $capabilities ); $count = count( $capabilities ); // If we have a numeric $capabilities array, spoof a wp_remote_request() associative $args array if ( $count && count( array_filter( array_keys( $capabilities ), 'is_numeric' ) ) == $count ) { $capabilities = array_combine( array_values( $capabilities ), array_fill( 0, $count, true ) ); } if ( $url && !isset( $capabilities['ssl'] ) ) { $scheme = parse_url( $url, PHP_URL_SCHEME ); if ( 'https' == $scheme || 'ssl' == $scheme ) { $capabilities['ssl'] = true; } } return (bool) $objFetchSite->_get_first_available_transport( $capabilities ); } |