0

どのように正確に動作させるのですか? メールの送信には Zend フレームワークを使用する必要があります。しかし、私のphpファイルにフレームワークを慎重に含めることができません。問題は、共有ホスティング サービスを使用していることが原因である可能性があります。

私は次のことをしました

  1. バージョン 2.x のフレームワークを含む Linux tgz ディストリビューションをダウンロードしました。
  2. それを解凍し、経由でフォルダーをアップロードしました。共有ホスティングに ftp します。
  3. Zend フォルダーをルートに配置しました。
  4. php.ini ファイルにアクセスできないので、次の内容で新しいファイルを作成しました。

    safe_mode = off
    SMTP = localhost
    smtp_port = 26
    sendmail_from = web15.meebox.net
    include_path = /home/sammensp/public_html/Zend/library
    
  5. フレームワークが機能するかどうかをテストするために、次のコードを php ファイルに配置しました。

    require_once 'Zend/Mail/Message.php';
    use Zend\Mail;
    $mail = new Mail\Message();
    $mail->setBody('This is the text of the email.');
    $mail->setFrom('domain@web15.meebox.net', 'Sender\'s name');
    $mail->addTo('name@gmail.com', 'Name o. recipient');
    $mail->setSubject('TestSubject');
    $transport = new Mail\Transport\Sendmail();
    $transport->send($mail);
    

問題は、次のエラーが発生することです。

    Warning:  require_once(Zend/Mail/Message.php) [<a href='function.require-
    once'>function.require-once</a>]: failed to open stream: No such file or directory in     
    /home/sammensp/public_html/mobile/test.php on line 23

    Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed  
    opening required 'Zend/Mail/Message.php'    
    (include_path='/home/sammensp/public_html/Zend/library') in   
    /home/sammensp/public_html/mobile/test.php on line 23

私の Web アプリと test.php ファイルは /public_html/mobile/test.php にあります。インクルード パスを次の include_path = /home/sammensp/public_html/Zend/library に設定しました。

私が間違ったことの解決策とそれを修正する方法を教えてもらえますか?

4

2 に答える 2

0

a を Web サーバーのルートに置くだけphp.iniではロードされません。(Apache サーバーを使用.htaccessしていると仮定して) ファイルを使用して、PHP 設定 ( php_value include_path ".:/usr/www/your_user_folder/your_website_folder/includes") を設定するかset_include_path()、php ファイルで使用します。

ホストによって両方の方法が無効になっている可能性があります。

于 2012-12-10T00:06:35.023 に答える
0

サーバー上のすべてのプロジェクトによるフレームワークへのアクセスを許可する必要がない限り、グローバル レベルで含める必要はありません。実際、プロジェクトをホストするほとんどの人は、php.ini ファイルを変更するためのアクセス権を持っていません (好都合な開発環境を除く)。

ZF は単なるライブラリ フォルダです。これは、コードイグナイター プロジェクトなどに zend フレームワーク ライブラリを追加する人々が行うことと非常によく似ています。疎結合に設計されているため、任意の方法で使用できます。

ZF をダウンロードし、public_html フォルダー内の好きな場所または任意の場所にアップロードします。以下の set_include_path() とサンプル コードを使用します。

<?php
    // Define relative path to ZendFramework in public_html
    define('ZF_PATH', '/../../../lib/php/zendframework');

    // Define path to application directory
    defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

    // Define real path to ZendFramework if it's not yet included in include_path
    if(!strpos(get_include_path(), 'zendframework'))
        define('ZF_REAL_PATH', realpath(APPLICATION_PATH . ZF_PATH));
    else define('ZF_REAL_PATH', '');

    // Updating include_path
    set_include_path(implode(PATH_SEPARATOR, array(ZF_REAL_PATH, get_include_path(),)));

    // Done! the rest of the code might be unnecessary in your case.
    require 'Zend/Application.php'; 

    // Create application, bootstrap, and run
    $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
    $application->bootstrap()->run();
于 2012-12-16T15:38:00.190 に答える