function http_build_url()

匿名 (未验证) 提交于 2019-12-03 03:06:01

问题:

I work with windows 7 using WampServer Version 2.2 php5.3.13

I put my project in www

and during the execution of my project this error is displayed

Fatal error: Call to undefined function http_build_url() in C:\wamp\www 

in the source code of my project I use this syntax

$url = http_build_url($url); 

I think I need to configure wamp

回答1:

  1. Check your extensions folder for php_http.dll file.
  2. If the file is present, check that php_http extension is enabled in your php.ini (or any other included .ini-s)
  3. If the file is absent, either download it separately from http://downloads.php.net/pierre/ or download along with other pecl extensions (you may need a few of them) from http://museum.php.net/php5/pecl-5.2.6-Win32.zip . Adjust your php.ini to enable the extension.
  4. Restart your web-server.


回答2:

This works

 if(!function_exists('http_build_url'))         {             // Define constants             define('HTTP_URL_REPLACE',          0x0001);    // Replace every part of the first URL when there's one of the second URL             define('HTTP_URL_JOIN_PATH',        0x0002);    // Join relative paths             define('HTTP_URL_JOIN_QUERY',       0x0004);    // Join query strings             define('HTTP_URL_STRIP_USER',       0x0008);    // Strip any user authentication information             define('HTTP_URL_STRIP_PASS',       0x0010);    // Strip any password authentication information             define('HTTP_URL_STRIP_PORT',       0x0020);    // Strip explicit port numbers             define('HTTP_URL_STRIP_PATH',       0x0040);    // Strip complete path             define('HTTP_URL_STRIP_QUERY',      0x0080);    // Strip query string             define('HTTP_URL_STRIP_FRAGMENT',   0x0100);    // Strip any fragments (#identifier)              // Combination constants             define('HTTP_URL_STRIP_AUTH',       HTTP_URL_STRIP_USER | HTTP_URL_STRIP_PASS);             define('HTTP_URL_STRIP_ALL',        HTTP_URL_STRIP_AUTH | HTTP_URL_STRIP_PORT | HTTP_URL_STRIP_QUERY | HTTP_URL_STRIP_FRAGMENT);              /**              * HTTP Build URL              * Combines arrays in the form of parse_url() into a new string based on specific options              * @name http_build_url              * @param string|array $url     The existing URL as a string or result from parse_url              * @param string|array $parts   Same as $url              * @param int $flags            URLs are combined based on these              * @param array &$new_url       If set, filled with array version of new url              * @return string              */             function http_build_url(/*string|array*/ $url, /*string|array*/ $parts = array(), /*int*/ $flags = HTTP_URL_REPLACE, /*array*/ &$new_url = false)             {                 // If the $url is a string                 if(is_string($url))                 {                     $url = parse_url($url);                 }                  // If the $parts is a string                 if(is_string($parts))                 {                     $parts  = parse_url($parts);                 }                  // Scheme and Host are always replaced                 if(isset($parts['scheme'])) $url['scheme']  = $parts['scheme'];                 if(isset($parts['host']))   $url['host']    = $parts['host'];                  // (If applicable) Replace the original URL with it's new parts                 if(HTTP_URL_REPLACE & $flags)                 {                     // Go through each possible key                     foreach(array('user','pass','port','path','query','fragment') as $key)                     {                         // If it's set in $parts, replace it in $url                         if(isset($parts[$key])) $url[$key]  = $parts[$key];                     }                 }                 else                 {                     // Join the original URL path with the new path                     if(isset($parts['path']) && (HTTP_URL_JOIN_PATH & $flags))                     {                         if(isset($url['path']) && $url['path'] != '')                         {                             // If the URL doesn't start with a slash, we need to merge                             if($url['path'][0] != '/')                             {                                 // If the path ends with a slash, store as is                                 if('/' == $parts['path'][strlen($parts['path'])-1])                                 {                                     $sBasePath  = $parts['path'];                                 }                                 // Else trim off the file                                 else                                 {                                     // Get just the base directory                                     $sBasePath  = dirname($parts['path']);                                 }                                  // If it's empty                                 if('' == $sBasePath)    $sBasePath  = '/';                                  // Add the two together                                 $url['path']    = $sBasePath . $url['path'];                                  // Free memory                                 unset($sBasePath);                             }                              if(false !== strpos($url['path'], './'))                             {                                 // Remove any '../' and their directories                                 while(preg_match('/\w+\/\.\.\//', $url['path'])){                                     $url['path']    = preg_replace('/\w+\/\.\.\//', '', $url['path']);                                 }                                  // Remove any './'                                 $url['path']    = str_replace('./', '', $url['path']);                             }                         }                         else                         {                             $url['path']    = $parts['path'];                         }                     }                      // Join the original query string with the new query string                     if(isset($parts['query']) && (HTTP_URL_JOIN_QUERY & $flags))                     {                         if (isset($url['query']))   $url['query']   .= '&' . $parts['query'];                         else                        $url['query']   = $parts['query'];                     }                 }                  // Strips all the applicable sections of the URL                 if(HTTP_URL_STRIP_USER & $flags)        unset($url['user']);                 if(HTTP_URL_STRIP_PASS & $flags)        unset($url['pass']);                 if(HTTP_URL_STRIP_PORT & $flags)        unset($url['port']);                 if(HTTP_URL_STRIP_PATH & $flags)        unset($url['path']);                 if(HTTP_URL_STRIP_QUERY & $flags)       unset($url['query']);                 if(HTTP_URL_STRIP_FRAGMENT & $flags)    unset($url['fragment']);                  // Store the new associative array in $new_url                 $new_url    = $url;                  // Combine the new elements into a string and return it                 return                      ((isset($url['scheme'])) ? $url['scheme'] . '://' : '')                     .((isset($url['user'])) ? $url['user'] . ((isset($url['pass'])) ? ':' . $url['pass'] : '') .'@' : '')                     .((isset($url['host'])) ? $url['host'] : '')                     .((isset($url['port'])) ? ':' . $url['port'] : '')                     .((isset($url['path'])) ? $url['path'] : '')                     .((isset($url['query'])) ? '?' . $url['query'] : '')                     .((isset($url['fragment'])) ? '#' . $url['fragment'] : '')                 ;             }         } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!