. /** * API for simplifying remote URL operations * * @package CoreAPI * @subpackage URLAPI * @copyright Copyright (C) 2000 - 2002 Kenzaburo Ito - kenito@300baud.org * @copyright Copyright (C) 2002 - 2013 MantisBT Team - mantisbt-dev@lists.sourceforge.net * @link http://www.mantisbt.org */ /** * Retrieve the contents of a remote URL. * First tries using built-in PHP modules (OpenSSL and cURL), then attempts * system call as last resort. * @param string URL * @return null|string URL contents (NULL in case of errors) */ function url_get( $p_url ) { # Generic PHP call if( ini_get_bool( 'allow_url_fopen' ) ) { $t_data = @file_get_contents( $p_url ); if( $t_data !== false ) { return $t_data; } # If the call failed (e.g. due to lack of https wrapper) # we fall through to attempt retrieving URL with another method } # Use the PHP cURL extension if( function_exists( 'curl_init' ) ) { $t_curl = curl_init( $p_url ); curl_setopt( $t_curl, CURLOPT_RETURNTRANSFER, true ); # @todo It may be useful to provide users a way to define additional # custom options for curl module, e.g. proxy settings and authentication. # This could be stored in a global config option. $t_data = curl_exec( $t_curl ); curl_close( $t_curl ); if( $t_data !== false ) { return $t_data; } } # Last resort system call $t_url = escapeshellarg( $p_url ); return shell_exec( 'curl ' . $t_url ); }