需要帮助在PHP

时间:2017-05-16 23:08:59

标签: php pear

我需要从我的PHP脚本发送电子邮件。我托管了我的网站的服务器不允许使用核心PHP mail()功能。他们说我应该写SMTP认证码来发送电子邮件。

我需要在PHP脚本的开头使用require_once('System.php');,但脚本执行会超出此行。在服务器的Apache日志中,日志条目显示:

  

AH01071:收到错误' PHP消息:PHP警告:require_once():open_basedir限制生效。文件(/opt/plesk/php/5.6/share/pear/System.php)不在/ var /中的允许路径中:(/ var / www / vhosts / kbcsurveyors.com /:/ tmp /) www / vhosts / kbcsurveyors.com / preinspection.kbcsurveyors.com / test-smtp-mail.php第20行\ n \ nPHP消息:PHP警告:require_once(/opt/plesk/php/5.6/share/pear/System.php) :无法打开流:第20行的/var/www/vhosts/kbcsurveyors.com/preinspection.kbcsurveyors.com/test-smtp-mail.php中不允许操作\ n \ n \ nPHP消息:PHP致命错误:require_on .... ............

kbcsurveyors.php是我托管的域名。

对于SMTP身份验证,我需要使用PEAR。我必须在服务器上的 php.ini 中加入 path / to / pear 。由于,服务器不允许我更改自己的 php.ini ,我将其复制到我的域名文件夹并将路径/附加到/ pear include_path

以下是我使用的命令和来自这些命令的输出:

shell_exec('cp /opt/plesk/php/5.6/etc/php.ini /var/www/vhosts/kbcsurveyors.com/httpdocs/includes');

shell_exec('pear config-get php_dir');
  

输出:/ usr / share / pear

shell_exec('php --ini');
  

输出:

     

配置文件(php.ini)路径:/ etc

     

加载的配置文件:/etc/php.ini

     

在/etc/php.d

中扫描其他.ini文件      

解析了其他.ini文件:/etc/php.d/00-ioncube-loader.ini,   /etc/php.d/curl.ini,   ....

echo get_include_path();
  

OUTPUT。:/ opt / plesk / php / 5.6 / share / pear

echo 'Class Exists: '.(class_exists('System', false)) ? 'Yes' : 'No';
  

输出:班级存在:是

但是,再次,require_once' System.php&#39 ;;在Apache日志中抛出上述错误。

phpinfo()编辑了一个脚本。它在本地值和主值中显示include_path。:/ opt / plesk / php / 5.6 / share / pear

我犯了什么错误?请帮忙。

提前致谢

1 个答案:

答案 0 :(得分:1)

通过在主域和所有子域的 php.ini 中将 shell_exec('pear config-get php_dir');显示的路径附加到include_path来解决问题。