:>/dev/null

ラガードエンジニアの不撓不屈の精神/unlearning/go beyond

PHPのcRUL関数を用いたProxy接続

PHPでの開発時、Proxy経由で外部連携等々でcRUL接続を行う場合のサンプルコードを以下に示す。

<?php

$ch = curl_init();
$fp = fopen("/tmp/test.txt", "w");

// 通信内容を保存するためのテンポラリファイル
$errfp = tmpfile();

$loginpassw = 'ID:PASS';
$proxy_ip = 'http://proxy.test.com';
$proxy_port = '3128';
$url = 'http://www.google.com';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// proxy接続を無効にする場合、以下ブロックをコメント
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_STDERR, $errfp);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);



// file output
//curl_setopt($ch, CURLOPT_FILE, $fp);

$ret = curl_exec($ch);
print_r($ret);


// 記録した通信内容を読み出す
fseek($errfp, 0);
while (($line = fgets($errfp)) !== FALSE) {
    $tmp .= $line . "<br />";
}
// 通信状況を出力
echo $tmp;

curl_close($ch);
fclose($fp);
?>

参考

https://ameblo.jp/itboy/entry-11983530735.html

■wwwサーバのProfileとして読み込ませる事も可能

wwwサーバをapacheユーザーとして起動しいる場合
proxy-user = "ID:PASS"
proxy = "http://proxy.test.com:3128"

■システム全体へ適用

OS構成ファイル/etc/environmentへ配置

  • environmentファイル作成
    • $ vim /etc/environment
# プロキシ設定 ==============================================
# 実際の環境変数の設定
export http_proxy="http://ID:PASS@proxy.test.com:3128"
export https_proxy="http://ID:PASS@proxy.test.com:3128"
# 大文字バージョンしか認識しないプログラム用
export HTTP_PROXY="http://ID:PASS@proxy.test.com:3128"
export HTTPS_PROXY="http://ID:PASS@proxy.test.com:3128"
# プロキシを利用しないアドレスの指定(必須)
export no_proxy="127.0.0.1,localhost"
export NO_PROXY="$no_proxy"

上記により全てのユーザーで共通して使用可能。

■蛇足

curl の基本設定ファイルを作ることが出来る
~/.curlrc

Default config file, see -K, --config for details.

.curlrc に書く書き方は -K で指定する config ファイルと同じ

  • ①configファイル作成
    • $ vim /etc/curlrc
      • [/var/www/.curlrc]参照
  • ②configファイル指定した挙動確認
ここら辺を良しなに作成する一括設定スクリプト

下記サイト参照

http://www.magtranetwork.com/aws/batch_proxy_settings.html