PHPを取得して、別のサーバーへのcurl接続を実行しようとしています。サーバーに接続するには、プロキシ経由でアクセスする必要があります。bash内で、env-variablehttp_proxyとこれは、コマンドラインからphpスクリプトを使用している間は正しく機能します。ただし、Apacheからcurlまたはwgetを実行しようとすると、エラーなしで失敗します。サーバーは、Centosのデフォルトに基づいてSELinuxで構成されています。これは私と同じように変更されていません。 SELinuxの構成について不明です。他の誰かが同様の問題を抱えていましたか?
SELinuxの下では、httpd(したがってその子)は発信接続を行うことが許可されていません。試してみてください
_setsebool -P httpd_can_network_connect 1
_
実際にselinuxが原因である場合は、_/var/log/messages
_または_/var/log/audit/audit.log
_にメッセージが表示されるはずです。
SelinuxでApacheを実行するのが初めての場合は、httpd_selinux(8)
を参照してください。
追加するために編集:PS selinuxの第一人者でない場合は、少し変わったApache構成をselinuxで動作させるために多くの時間を費やす予定です。
プロキシ経由で接続する必要があるとcurlに伝えましたか?
$curlHandle=curl_init();
curl_setopt($curlHandle, CURLOPT_URL, 'http://www.google.com');
curl_setopt($curlHandle, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($curlHandle, CURLOPT_PROXYPORT, 8080);
curl_setopt($curlHandle, CURLOPT_PROXY, 'proxy.localnet.com');
// optional
// curl_setopt($curlHandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
// curl_setopt($curlHandle, CURLOPT_PROXYUSERPWD, 'user:s3cr3t');
// curl_setopt($curlHandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
$out=curl_exec($curlHandle);
curl_close($curlHandle);