ホームページ  >  記事  >  バックエンド開発  >  libcurl upgrade_PHP チュートリアル後に libcurl.so.3 の解決策が見つからない

libcurl upgrade_PHP チュートリアル後に libcurl.so.3 の解決策が見つからない

WBOY
WBOYオリジナル
2016-07-13 10:42:582360ブラウズ

今日この記事は、libcurl をアップグレードした後に libcurl.so.3 が見つからない問題の解決策を紹介します。すべての友人に役立つことを願っています。

システムはバージョン libcurl 7.19 でインストールされ、コンパイルされた動的ライブラリは libcurl.so.4 です

私自身のプログラムは libcurl 7.15 バージョンでコンパイルされており、ソフト リンクを作成するだけで libcurl.so.3 バージョンが使用されます。 32 ビット システムと 64 ビット システムのどちらを使用しているかに応じて、次の手順を実行します:

コードは次のとおりですコードをコピー


libcurl の主な機能は、さまざまなプロトコルを使用してさまざまなサーバーに接続および通信することです。つまり、sockPHP は完全にカプセル化されており、libcurl をサポートしています (さまざまなプロトコルを使用してさまざまなサーバーに接続および通信できます)。 、libcurl は現在、http、https、ftp、gopher、telnet、dict、file、および ldap プロトコルをサポートしています。 libcurl は、HTTPS 証明書認証、HTTP POST、HTTP PUT、FTP アップロード (もちろん PHP の ftp 拡張機能も使用できます)、HTTP 基本フォームのアップロード、プロキシ、Cookie、およびユーザー認証もサポートしています。

簡単なコード例を教えてください:
説明:
1. ポイントはcurl_easy_setopt関数のオプション設定です。ftp、http、get、postなど多くのオプションを設定できます。具体的な用途に応じて設定してください。

2. http ダウンロード ファイルなど、取得したデータを判断する必要があります。ファイルが存在しない場合は、処理する必要があります。なぜなら、ライターは 404 not found などの Web コンテンツを buf に入れることができますが、このコンテンツをファイルのコンテンツと見なすことができないため、http Web によって返されるコードを判断する必要があります。

3. 問題があり、サーバー上の特定のファイル名を取得したいのですが、getinfo を使用したときに多くのオプションを試しましたが、このオプションは見つかりませんでした。実サーバーのファイル名を保存してください。 ご存知の場合は、教えてください。ありがとうございます。

cd /usr/lib または cd /usr/lib64

ln -s libcurl.so.4 libcurl.so.3

コードは次のとおりです コードをコピー


#include "curl/curl.h"
#pragma comment(lib, "libcurl.lib")

long Writer(void *data, int size, int nmemb, string &content);
bool CurlInit(CURL *&curl, const char* url,string &content);
bool GetURLDataBycurl(const char* URL, string &content);

void main()
{
char *url="http://www.bKjia.c0m";
文字列コンテンツ;
If (GetURLDataBycurl(url,content))
{
printf("%sn",content);

}
Getchar();
}

bool CurlInit(CURL *&curl, const char* url,string &content)
{
CURLcode コード;
文字列エラー;
カール =curl_easy_init();
If (curl == NULL)
{
printf("CURL 接続の作成に失敗しましたn");
false を返す;
}
コード =curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, エラー);
If (コード != CURLE_OK)
{
printf( "エラー バッファ [%d]n の設定に失敗しました", code );
false を返す;
}
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
コード =curl_easy_setopt(curl, CURLOPT_URL, url);
If (コード != CURLE_OK)
{
printf("URL [%s]n の設定に失敗しました", エラー);
false を返す;
}
コード =curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
If (コード != CURLE_OK)
{
printf("リダイレクト オプション [%s]n の設定に失敗しました"、エラー);
false を返す;
}
コード =curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ライター);
If (コード != CURLE_OK)
{
printf("ライター [%s]n の設定に失敗しました", エラー);
false を返す;
}
コード =curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
If (コード != CURLE_OK)
{
printf( "書き込みデータ [%s]n の設定に失敗しました", エラー );
false を返す;
}
true を返します;
}

長いライター(void *data, int size, int nmemb, string &content)
{
    長いサイズ = サイズ * nmemb;
    文字列 temp(データ,サイズ);
    内容 += 温度;
    サイズを返す;
}

bool GetURLDataBycurl(const char* URL, string &content)
{
    カール *カール = NULL;
    CURLcode コード;
    文字列エラー;

コード =curl_global_init(CURL_GLOBAL_DEFAULT);
    if (コード != CURLE_OK)
    {
        printf( "グローバル初期化デフォルト [%d]n に失敗しました", code );
        false を返します;
    }
   
    if ( !CurlInit(curl,URL,content) )
    {
        printf( "グローバル初期化デフォルト [%d]n に失敗しました" );
        PM_FALSE を返します;
    }
    コード =curl_easy_perform(curl);
    if (コード != CURLE_OK)
    {
        printf( "'%s' [%s]n の取得に失敗しました", URL, エラー);
        false を返します;
    }
    長いリコード = 0;
    コード =curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE , &retcode);
    if ( (コード == CURLE_OK) && retcode == 200 )
    {
        倍長の長さ = 0;
        コード =curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD , &length);
        printf("%d",retcode);
        FILE * file = fopen("1.gif","wb");
        fseek(ファイル,0,SEEK_SET);
        fwrite(content.c_str(),1,length,file);
        fclose(ファイル);

//structcurl_slist *list;
        //コード =curl_easy_getinfo(curl,CURLINFO_COOKIELIST,&list);
        //curl_slist_free_all (リスト);

true を返す;
    }
    それ以外
    {
    // debug1( "%s n ",getStatusCode(retcode));
        false を返します;
    }
    curl_easy_cleanup(カール);
    false を返します;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633209.html技術記事この文章は、今日、大家が libcurl のバージョンを介して libcurl.so.3 の解決法に到達できなかったので、各位の友人にサポートを提供することを希望しています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。