Php Can';t包括明确存在(已安装)的pear包

Php Can';t包括明确存在(已安装)的pear包,php,pear,Php,Pear,我安装了Mail_Mime软件包 include('Mail.php'); include('Mail/mime.php'); 我得到以下错误: Warning: include(Mail.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/domain.co.uk/httpdocs/mail_mime/index.php on line 2 Warning

我安装了Mail_Mime软件包

include('Mail.php');
include('Mail/mime.php');
我得到以下错误:

Warning: include(Mail.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/domain.co.uk/httpdocs/mail_mime/index.php  on line 2

Warning: include() [function.include]: Failed opening 'Mail.php' for inclusion (include_path='.:/usr/lib/php/PEAR:/usr/lib/php/modules') in /var/www/vhosts/domain.co.uk/httpdocs/mail_mime/index.php on line 2

Warning: include(Mail/mime.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/domain.co.uk/httpdocs/mail_mime/index.php on line 3

Warning: include() [function.include]: Failed opening 'Mail/mime.php' for inclusion (include_path='.:/usr/lib/php/PEAR:/usr/lib/php/modules') in /var/www/vhosts/domain.co.uk/httpdocs/mail_mime/index.php on line 3
这两个文件肯定在文件夹中:

/usr/lib/php/PEAR/Mail.php
/usr/lib/php/PEAR/Mail/mime.php

pear列表告诉我所需的软件包已安装,并且没有缺少依赖项

它是否在您的include路径中

var_dump(get_include_path());
如果不是,请尝试将其添加到包含路径:

在运行时:

$path = get_include_path() . PATH_SEPARATOR . '/usr/lib/php/PEAR';
set_include_path($path);
或者在php.ini中

include_path=".:--Whatever's here already--:/usr/lib/php/PEAR"

另一方面,如果您关心它被包括在内,为什么不使用require_一次呢?这将防止它被多次包含(一次部分)并导致致命错误。对于使用虚拟主机的Plesk用户:当您将open_basedir设置为允许包含PEAR库时,不要忘记将Directory指令包含在vhost.conf的/var/www/vhosts/yourdomain/subdomains/yoursubdomain/conf/vhost.conf

<Directory  /var/www/vhosts/yourdomain/subdomains/yoursubdomain/httpdocs>
        <IfModule mod_php4.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/var/www/vhosts/yourdomain/subdomains/yoursubdomain/httpdocs:/tmp:/usr/share/php"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "var/www/vhosts/yourdomain/subdomains/yoursubdomain/httpdocs:/tmp:/usr/share/php"
        </IfModule>
        Options -Includes -ExecCGI
</Directory>

php_admin_标志引擎打开
php_管理_标志安全模式关闭
php_admin_value open_basedir“/var/www/vhosts/yourdomain/subdomains/yourdomain/httpdocs:/tmp:/usr/share/php”
php_admin_标志引擎打开
php_管理_标志安全模式关闭
php_admin_value open_basedir“var/www/vhosts/yourdomain/subdomains/yourdomain/httpdocs:/tmp:/usr/share/php”
选项-Includes-ExecCGI

我通过更改open_basedir值实现了这一点,现在我只需要了解如何在服务器范围内(即允许当前域的pear、tmp和webroot)使用
来分隔目录,还是
?为什么一开始会有一个点?我通过更改open_basedir值来实现它,现在我只需要解决如何在服务器范围内实现这一点(即允许当前域的pear、tmp和webroot)小心:如果您的文件正在使用Mail.php,请将其包含为大写的“M”。