我一直在使用file_get_contents通过一个我分发给其他用户的WordPress插件请求文件。
无论如何,最初我的做法是检查用户是否已启用 'allow_url_fopen',如果是,则直接使用 file_get_contents。如果没有,然后我检查用户是否已启用cURL,并采取那种方式。 以下是代码:
if ( ini_get( 'allow_url_fopen' ) == 1 ) {
$content = file_get_contents( $file );
return $content;
}
elseif ( function_exists( 'curl_version' ) ) {
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, riva_slider_pro_dir( true ) . $file );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$content = curl_exec( $curl );
curl_close( $curl );
return $content;
}
然而,我遇到了一个问题。某个用户的主机禁止了file_get_contents函数访问文件,同时允许allow_url_fopen启用。无论是相对路径还是绝对路径都不起作用。所以我转向另一种解决方案,发现这个方法行得通:
ob_start();
include $file;
$content = ob_get_contents();
ob_end_clean();
我的问题是,这种方法可靠性如何?目前我一直在使用本地路径,例如“admin/file.css”等。
如果我决定用这个替换顶部的代码,有哪种主机设置可能会阻止它正常工作?使用这种方法无法提供检查是否出错的途径。
file_get_contents
的主机应该被放弃。这是一个愚蠢的限制。 - ceejayoz