2012-01-19 66 views
0
$curl = curl_init(); 

    curl_setopt($curl, CURLOPT_URL, 'hello_world'); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

    curl_setopt($curl, CURLOPT_CAINFO, getcwd().'/ca.pem'); 
    curl_setopt($curl, CURLOPT_SSLCERT, getcwd().'/client.pem'); 
    curl_setopt($curl, CURLOPT_SSLKEY, getcwd().'/key.pem'); 

    $post = array(
    // ... 
); 

    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, join('&', $post)); 

    $curl_result = curl_exec($curl); 
    $error = curl_error($curl); 

    var_dump($curl_result); 
    var_dump($error); 

    curl_close($curl); 

控制檯「PHP simple.php」 但這個劇本不是在瀏覽器中工作捲曲的工作,但不是在瀏覽器

布爾值false

字符串「NSS這個腳本工作的工作:私有密鑰找不到證書:PEM令牌#1:client.pem」(長度= 67)

請幫助

 
` 
    cd /path/to/simple.php; ls -la 
    -rwxrwxrwx 1 ujin apache 1.4K Jan 19 19:03 simple.php 
    -rw-r--r-- 1 ujin apache 2.6K Jan 19 15:58 ca.pem 
    -rw-r--r-- 1 ujin apache 1.6K Jan 19 15:59 client.pem 
    -rw-r--r-- 1 ujin apache 1.1K Jan 19 16:18 key.pem 
` 
+0

固定!禁用代理並重新啓動httpd。感謝幫助! – UJin

回答

1

您的腳本無法找到ca.pem和朋友。有些事情要嘗試

  • 放在絕對路徑
  • 確保,訪問權限都OK了web服務器進程

http://at2.php.net/manual/en/function.curl-setopt.php告訴我們,CURLOPT_CAINFO需要一個絕對路徑!

EDIT(與@UJin討論後):

請嘗試絕對路徑:

$curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, 'hello_world'); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

    $cwd=getcwd(); 

    //DEBUG 
    echo "cwd=$cwd\n"; 

    curl_setopt($curl, CURLOPT_CAINFO, "$cwd/ca.pem"); 
    curl_setopt($curl, CURLOPT_SSLCERT, "$cwd/client.pem"); 
    curl_setopt($curl, CURLOPT_SSLKEY, "$cwd/key.pem"); 
+0

我改變了方式,但它沒有工作 – UJin

+0

請詳細說明:你改變了什麼(更新你的OQ)並且改變了錯誤? –

+0

改變了絕對的方式。授予apache的權利。 – UJin

相關問題