1

私は現在、/ var / www / vhosts / company/httpdocsにあるスクリプトmail.phpを呼び出すプログラムに取り組んでいます。mail.phpはrequire_once dirname(__FILE__).'/../pear/Mail.php'smtp送信を実行しようとしていますrequire_onceが、失敗しています。私のPEARディレクトリは/var/ www / vhosts / company/pearにあります。次に、/ var / www / vhosts / company / pearをinclude_pathに追加しようとしましたが、require_onceそれでも失敗します。

私は一歩下がって、mail.phpをfile_exists(dirname(__FILE__).'/../pear/Mail.php')、結果をログファイルに出力する単純なスクリプトとして置き換えることにしました。スクリプトを個別に実行すると、正常に動作し、1が返されます。フラッシュプログラムがスクリプトを実行すると、何も返されません。dirname(__FILE__).'/../pear/Mail.php'スクリプトを個別に実行するか、フラッシュファイルで実行するかに関係なく、印刷すると同じ結果が返されます。Mail.phpPEARファイルでchmod777も試しましたが、何もしませんでした。

何が起こっているのかについて何かアイデアはありますか?

4

1 に答える 1

0

私はそれが2つのことに関係していることに賭けます:

1)Flash / Actionscriptは通常、ローカルファイルパスにアクセスしません。

言い換えれば、それはおそらくファイルを実行していません。

コンパイルされたクライアント側モジュールとして、実際のWebアクセス可能なURLが必要です。ここでの問題の一部は、デザイン自体です。アクションスクリプト内のHTTPリクエストで試してみると、より良い結果が得られます。フラッシュファイルにアクセスできない場合は、タフな豆があります。

ここで、actionscriptを介してメールルーチンを実行している場合はどうなりますか?それはセキュリティ上のリスクだと思います。actionscriptにルーチンをAJAXレシーバールーチンに渡してもらい、セッションの資格情報をチェックしてからメールを送信することをお勧めします。

2)サーバーのCWDUP制限。

特定のサーバー構成に応じて、Executableは通常、自身のルート外のファイルパスにアクセスできません。(つまり、実行可能ファイルは.... \ another directory \ other fileを呼び出すことはできません。)一部のサーバーはこれを許可しますが、多くのサーバーは許可しません。

PEARディレクトリがphp.iniパス変数にあることを確認することをお勧めします。このように、ディレクトリ名にCWDUPを使用する必要はまったくなく、includesディレクトリにあります。(これは通常、pearモジュールの動作方法です。)

したがって、buncha dot-dotsを使用するのではなく、上から下に向かって作業してみてください。

$mailpath=$_SERVER['DOCUMENT_ROOT'].'\include\mail.php';

最後の手段として、mail.phpルーチンを同じディレクトリにコピーして、それが機能するかどうかを確認できます。それでも失敗する場合は、PEARへのインクルードパスです。(mail.phpはおそらくPEAR関数を呼び出しているためです。)

于 2009-11-20T05:54:40.617 に答える