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

我的网络应用程序和 test.php 文件位于 /public_html/mobile/test.php 我已将包含路径设置为以下 include_path = /home/sammensp/public_html/Zend/library

你能帮我解决我做错了什么以及我如何解决它吗?

4

2 回答 2

0

您不能只将 aphp.ini放在网络服务器根目录中,它不会被加载。使用.htaccess(假设您在 apache 服务器上)文件来设置 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 框架库添加到他们说的 codeigniter 项目或类似项目中的做法非常相似。它被设计为松散耦合的,因此可以以任何您想要的方式使用它。

下载 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 回答