私は請求サーバー (サーバー 1) とコントロール パネル サーバー (サーバー 2/Virtualmin) があるプロジェクトに取り組んでおり、請求システムは変数を受け入れるサーバー 2 でスクリプトを実行する必要がありますが、サーバー 2 のファイルには認証。
次のように、別のサーバーでシェルコマンドを使用して、必要なことを達成できました。
wget --http-user=root --http-passwd=pass --no-check-certificate https://example.com:10000/virtual-server/remote.cgi?program=create-domain&domain=example.net&pass=123&default-features
これに関する問題は、請求サーバーが特定の PHP ファイルしか実行できず、サーバーに wget がインストールされていないため、shell_exec では実行できないことです。
PHP cURL を試してみましたが、使い方がよくわからず、うまくいきませんでした。これは私が試したものです:
$serverip = "example.com:10000";
$domain = "example.net";
$password = "123";
$ch = curl_init("https://$serverip/virtual-server/remote.cgi?program=create-domain&domain=$domain&pass=$password&default-features");
$userpwd = 'root:pass';
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_exec($ch);
curl_close($ch);
さらに詳しい情報が必要な場合は、お知らせいただければ幸いです。事前に感謝します。これは非常に奇妙に思えます。
EDIT ONE これは私が試した新しいコードですが、まだ機能していません。
<html>
<h1>Provision Test</h1><hr />
<?php
$domain = "example.net";
$password = "123";
$serverip = "example.com:10000";
$ch = curl_init();
$userpwd = 'root:pass';
curl_setopt($ch, CURLOPT_URL, "http://{$serverip}/virtual-server/remote.cgi?program=create-domain&domain={$domain}&pass={$password}&default-features");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_exec($ch);
curl_close($ch);
?>
</html>
編集 2 上記のコード (編集 1) は正常に実行されているように見えますが、CLI 経由でのみ実行され、Web インターフェイス経由で試行しても何も起こらず、スクリプトは curl_init(); に到達すると停止します。どんなアイデアでも大歓迎です。