外出自粛中でも楽しく過ごす!QAまとめ>>

メールを配信するCGIがあります。
フォームで登録するようになっているのですが、フォームで登録した際に、御礼のメールを配信したいと思って下記のようなphpを作っています。

フォームから送信されたデータを受け取り、送信者にメールを送った後、別のCGI(perl)にPOST送信するphpを作っています。

ローカルに作ったphp環境では動いたのですが、サーバーにアップロードすると下記のエラーが出て動きませんでした。

エラーメッセージ
Warning: main(HTTP/Request.php): failed to open stream: No such file or directory in /home/*****/public_html/cgi/********/mail.php on line 34

メールを送信する部分は特に問題なく動いているみたいで問題はほかのcgiにPOST送信する部分にあるみたいです。初心者なのであるHPに掲載されていたコードをまる写しして必要な部分だけ変更しただけで、あまり意味は分からないままです。

/*POST送信*/

require_once "HTTP/Request.php";

$req =& new HTTP_Request("http://www.***.jp/******/cgi/**********/cgi-bin/ …);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData("mail", "$mail");
$req->addPostData("md", "*****");
$req->addPostData("id", "**************");


if (!PEAR::isError($req->sendRequest())) {
$response1 = $req->getResponseBody();
} else {
$response1 = "";
}

エラーメッセージにある34行目というのは
require_once "HTTP/Request.php";
なのですが、どこに問題があるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

単純にエラーメッセージを見て考えると、指定されたファイルが見つからないということだと思います。


http://www.***.jp/******/cgi/**********/cgi-bin/ …
というURLは正しいですか?
ブラウザでアドレスをたたくと表示されますか?
    • good
    • 0

ローカルで動いていたということから、サーバ側でPEAR が使えないのかもしれませんね。


こういう場合は、手動インストールです。

HTTP_Request と Net_URL を下記のサイトで入手し、
http://pear.php.net/package/HTTP_Request
http://pear.php.net/package/Net_URL

/
任意の場所(ここでは絶対パス /var/www/hogehoge/ とします)に適当なディレクトリ(ここではincludeとします)を作成し、下のようなファイル構成になるようにファイルを置く。

include/HTTP/Request.php
include/HTTP/Request/Listener.php
include/Net/URL.php

require_once "HTTP/Request.php"; より前に下記を追加

ini_set("include_path", '/var/www/hogehoge/include/' . PATH_SEPARATOR . ini_get("include_path"));


でいけるかもしれません。

参考URL:http://peardoc.xole.net/installation.manually.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む


人気Q&Aランキング