2012-12-27 14 views
7

tôi làm việc với các cửa sổ 7 sử dụng WampServer Version 2.2 php5.3.13chức năng http_build_url()

tôi đặt dự án của tôi tại www

và trong quá trình thực hiện dự án của tôi lỗi này sẽ được hiển thị

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

trong mã nguồn của dự án của tôi Tôi sử dụng cú pháp này

$url = http_build_url($url); 

Tôi nghĩ rằng tôi cần để định cấu hình wamp

+0

Theo các tài liệu, nó là một phần của "(PECL pecl_http> = 0.21.0)". Tôi giả sử bạn không có phần mở rộng ['pecl_http'] (http://pecl.php.net/package/pecl_http) được cài đặt? – Wiseguy

+2

Bạn cần đọc tài liệu cho 'http_build_url', giống như bạn làm với bất kỳ chức năng/công cụ nào khác mà bạn sử dụng, đúng không? Đúng?! –

+1

Bạn cần mở rộng http> tìm kiếm tại http://downloads.php.net/pierre/ cho phiên bản của bạn. Thêm nó vào thư mục php/ext của bạn và thêm nó vào php.ini của bạn như là phần mở rộng mới – Svetoslav

Trả lời

6
  1. Kiểm tra thư mục tiện ích mở rộng của bạn cho php_http.dll tệp.
  2. Nếu tập tin là hiện tại, kiểm tra xem php_http mở rộng được kích hoạt trong php.ini của bạn (hoặc bất kỳ khác bao gồm .ini-s)
  3. Nếu tập tin là vắng mặt, hoặc tải nó tách biệt khỏi http://downloads.php.net/pierre/ hoặc tải về cùng với phần mở rộng PECL khác (bạn có thể cần một vài trong số họ) từ http://museum.php.net/php5/pecl-5.2.6-Win32.zip. Điều chỉnh php.ini của bạn để bật tiện ích.
  4. Khởi động lại máy chủ web của bạn.
0

này hoạt động

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'] : '') 
       ; 
      } 
     }