【问题标题】:Need help in setting up PEAR in PHP在 PHP 中设置 PEAR 时需要帮助
【发布时间】:2017-10-16 05:14:06
【问题描述】:

我需要从我的 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 行\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 中不允许操作\nPHP 消息:PHP 致命错误:require_on.... …………

kbcsurveyors.php 是我托管的域。

对于 SMTP 身份验证,我需要使用 PEAR。我必须在服务器上的 php.ini 中包含 path/to/pear。由于服务器不允许我更改它自己的 php.ini,我将它复制到我的域文件夹并将 path/to/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();

输出 .:/opt/plesk/php/5.6/share/pear

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

输出:类存在:是

但同样,require_once 'System.php';在 Apache 日志中抛出上述错误。

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

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

提前致谢

【问题讨论】:

  • 你为什么不直接使用 PHPMailer 呢?
  • 最好的建议是停止在有限的托管计划上浪费时间,并使用您可以更改 php.ini 文件的服务器。每月 5 美元的 Digital Ocean 托管计划,甚至是 AWS 的免费试用年,应该会让您开始得很好。

标签: php pear


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多