summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/curl/interface.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 7c3c5a7975..bf6ffd8e90 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -1165,10 +1165,18 @@ PHP_MINIT_FUNCTION(curl)
PHP_MSHUTDOWN_FUNCTION(curl)
{
#ifdef PHP_CURL_URL_WRAPPERS
- php_unregister_url_stream_wrapper("http" TSRMLS_CC);
- php_unregister_url_stream_wrapper("https" TSRMLS_CC);
- php_unregister_url_stream_wrapper("ftp" TSRMLS_CC);
- php_unregister_url_stream_wrapper("ldap" TSRMLS_CC);
+ {
+ curl_version_info_data *info = curl_version_info(CURLVERSION_NOW);
+ char **p = (char **)info->protocols;
+
+ while (*p != NULL) {
+ /* Do not enable cURL "file" protocol and make sure cURL is always used when --with-curlwrappers is enabled */
+ if (strncasecmp(*p, "file", sizeof("file")-1) != 0) {
+ php_unregister_url_stream_wrapper(*p TSRMLS_CC);
+ }
+ (void) *p++;
+ }
+ }
#endif
curl_global_cleanup();
#ifdef PHP_CURL_NEED_OPENSSL_TSL