2
本質上,我要做的就是取一個HTTP Post,並將該文件保存在第一個服務器上,然後將該文章轉發到第二個服務器,該服務器再次保存該文件然後以該文件作爲附件生成一封電子郵件。目前,我已經將它發送到第二臺服務器,並創建了電子郵件併發送出去,所以這不是問題。
但是,當我嘗試添加第一臺服務器時,無法發送它,或打印出有意義的結果。下面是代碼發送/接收腳本:
<?php
$uploaddir = '/home/www/myfirstsite.com/3d/';
$uploadname = basename($_FILES['file']['name']);
$uploadfile = $uploaddir . $uploadname;
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "OK\n";
} else {
echo "ERROR\n";
}
echo "<br>";
$url = 'http://mysecondsite.com:12345/receive_scan.php';
//I use port 12345 because most of the important ports are being used already.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_FILES);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
$result='Result: '.curl_exec ($ch);
echo $result;
echo curlerrno($ch);
echo curlerror($ch);
curl_close ($ch);
目前,當我發送一個HTTP POST請求,它打印出這一點:
OK
Result:
,我用它來發送HTTP張貼代碼要求是這樣的:
<html><body>
<form enctype="multipart/form-data" action="http://myfirstsite.com/receive_scan.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="file" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
接收第二服務器,上面這個代碼的工作,如果我只是更改網站上的代碼,是這樣的:
<?php
$uploaddir = './scans/';
$uploadname = basename($_FILES['file']['name']);
$uploadfile = $uploaddir . uploadname;
echo "File Received\n";
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "OK\n";
} else {
echo "ERROR\n";
}
shell_exec("bash sendmail.bash ".$uploadfile." ".$uploadname);
?>
sendmail.bash只是一個使用msmtp發送電子郵件到我的電子郵件的腳本。