can';不要将Zend框架包含到共享托管服务器上的我的php文件中

can';不要将Zend框架包含到共享托管服务器上的我的php文件中,php,zend-framework,Php,Zend Framework,我怎样才能让它工作?我需要使用Zend框架来发送邮件。 但是我无法在我的php文件中包含这个框架。问题可能是由于im使用共享主机服务造成的 我已经做了以下工作 下载了一个linux tgz发行版,其框架为2.x版 解压并通过上传文件夹。ftp到我的共享主机 我将Zend文件夹放在根目录中 我没有访问php.ini文件的权限,因此我创建了一个新文件,其中包含以下内容 safe_mode = off SMTP = localhost smtp_port = 26 sendmail_from = we

我怎样才能让它工作?我需要使用Zend框架来发送邮件。 但是我无法在我的php文件中包含这个框架。问题可能是由于im使用共享主机服务造成的

我已经做了以下工作

  • 下载了一个linux tgz发行版,其框架为2.x版
  • 解压并通过上传文件夹。ftp到我的共享主机
  • 我将Zend文件夹放在根目录中
  • 我没有访问php.ini文件的权限,因此我创建了一个新文件,其中包含以下内容

    safe_mode = off
    SMTP = localhost
    smtp_port = 26
    sendmail_from = web15.meebox.net
    include_path = /home/sammensp/public_html/Zend/library
    
  • 我将以下代码放入一个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
    
    警告:require_once(Zend/Mail/Message.php)[]:无法打开流:中没有此类文件或目录
    /第23行的home/sammensp/public_html/mobile/test.php
    致命错误:require_once()[]:失败
    打开所需的“Zend/Mail/Message.php”
    (包括_path='/home/sammensp/public_html/Zend/library')
    /第23行的home/sammensp/public_html/mobile/test.php
    
    我的web应用程序和test.php文件位于/public_html/mobile/test.php 我已将include路径设置为以下include\u path=/home/sammensp/public\u html/Zend/library


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

    您不能将
    php.ini
    放在Web服务器根目录中,它不会被加载。使用
    .htaccess
    (假设您在apache服务器上)文件设置PHP设置(
    PHP\u值包含路径”):/usr/www/your\u user\u folder/your\u website\u folder/includes“
    )或在PHP文件中使用
    设置包含路径()


    您的主机可能会禁用这两种方法。

    除非您需要允许服务器上的所有项目访问该框架,否则不需要在全局级别包含它。事实上,大多数主持项目的人没有修改php.ini文件的权限(loval开发环境除外)

    ZF只是一个库文件夹。这与人们将zend框架库添加到say codeigniter项目或类似项目中的做法非常相似。它的设计是松散耦合的,因此可以以任何方式利用它

    下载ZF并将其上传到您喜欢的公共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();
    

    您确定您创建的php.ini中的设置确实得到了应用吗?尝试使用
    set\u include\u path()
    将库文件夹添加到包含路径。验证您的ini设置是否通过ini\u get()或phpinfo使用。如果需要,请使用ini_set()检查您的主机提供商,因为最终他们会决定允许您做什么。如果它们不支持您需要的内容,您可以随时切换。我检查了include路径是否正常,但仍然有问题……好的,所以我尝试使用另一个名为php mailer的邮件包装器。它奏效了,但没有奏效。我从来没有收到过zend的邮件去上班,但我想这没关系。我会妥善解决我的根本问题。也就是说hotmail将我的邮件放入垃圾邮件过滤器中,所以我现在使用了pfpinfo(),名为“include_path”的字段的值为“/home/sammensp/public_html/Zend/library”这就是我设置它的方式。顺便说一下,我的php.ini不在根目录中,而是在我保存项目的库中,它位于文件夹“/home/sammensp/public_html/”中