0

Web サイトに Zend Framework を実装する際に問題が発生しています。これは派手なアプリケーションではなく、Zend のいくつかの検証クラスと Zend_File_Transfer_Adapter_Http を使用してファイルをサーバーにアップロードするだけです。それらのどれも機能しません。質問は次のとおりです。サイトのフォルダー構造を指示するために htaccess ファイルを作成する必要があること、および mod_rewrite を有効にする必要があることを読みました。プロバイダーのコントロール パネルは非常に情報量が少ないため、mod_rewrite を確認する方法がわかりません。

とにかく、次のように Zend ライブラリを含めるだけで十分だと思いました。

$libreria = $_SERVER['DOCUMENT_ROOT'];
$libreria.='Zend/ZendFramework/library';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
Zend_Loader_Autoloader::getInstance();

しかし、明らかにそうではありません。だから私が持っている別の質問は次のとおりです: ¿Autoloader を別の方法でインスタンス化する必要がありますか?名前空間を指定する必要がありますか$loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace(something);?ページ。

最後に、いくつかのスクリプトでクラス PHPMailer を設定してユーザー入力を処理しました。Zend Framework へのパスが正しく含まれているように見えるときはいつでも、ページで 500 Internal Server エラーがスローされますが、パスを間違って記述しても発生しません。 (これは別の問題です。たとえば$libreria='Zend/ZendFramework/library';、入力を検証するために設定したすべての条件が何を書いても失敗することがわかるため、ドキュメントに相対的なパスを設定すると機能し ないと思います。

最後の質問は、PHPMailer には Zend Framework との非互換性がありますか? 質問して申し訳ありませんが、私は初心者であり、PHPMailer クラスを確認しましたが、互換性のないものは見つかりませんでした。質問する必要があります。

誰かが喜んで助けてくれるなら、事前に感謝します

また、この Web サイトをローカル サーバーでテストしたところ、問題なく動作することも付け加えておく必要があります。問題はリモート サーバーにあります。

また、私はこの記事をここで読みました。それは私が探しているものです。それによると、新しい演算子を使用して Zend の標準クラスを参照できるはずです。しかし、リモートサーバーではこれを行うことができず、ローカルでのみ実行できます。

もう少し検索すると、この同じサイトでZend のインストールが失敗する可能性のある原因について読んだので、質問を明確にすることができます。まず、これらの条件のどれも失敗していないと思いますが、 「プロバイダーのリモート サーバーで mod_rewrite を確認できませんでした。次に、htaccess ファイルが空であるため、リダイレクト ルールがありません (Zend Framework が不適切な htaccess と対話する際の問題を破棄する必要があります。間違っている場合は修正してください)。 3 つ目は、php.ini ファイルにアクセスできないことです。それで、なにかお手伝いできますか?私は午前中ずっとこれに苦労しており、何が問題なのか手がかりがないので、どんな提案も受け入れられます。

4

1 に答える 1

1

MVC アプリケーションとしての Zend Framework とスタンドアロン ライブラリを区別する必要があります。あなたが求めているのはスタンドアロンのライブラリであり、残念ながら多くのドキュメントは MVC アプリケーションとしての ZF に関するものです。MVC アプリケーションを開始するには、htaccess が必要です。

スタンドアロン ライブラリとしての ZF の場合、基本的に必要なものは 1 つだけです。正しいパスです。必要に応じてオートローダーを追加することもできますが、ZF 1.x の場合、require_once がすべて用意されているため、これは必須ではありません。

あとは、パスが機能しているかどうかをテストするだけです。require_once('Zend/Loader/Autoloader.php');インクルードパスがrequire_onceステートメントのパスを展開するため、ステートメントがエラーをスローしない場合、基本的にすべてのセットです。

オートローダー用。これでエラーが表示されない場合は、ここでもすべて設定する必要があります。ただし、メインのアプリケーションと競合する可能性があります。Zend_Loader_Autoloader の直後に、Zend クラスをインスタンス化できるはずです。次の行でバリデーターの 1 つをロードしてみてください。それが機能するが、後でアプリケーションで機能しない場合は、そのアプリケーションに Zend ローダーをオーバーライドする別のオートローダーがある可能性があります。

于 2012-10-24T13:30:55.017 に答える