我需要从我的PHP脚本发送电子邮件 . 我托管我的网站的服务器不允许使用核心PHP mail()
功能 . 他们说我应该写SMTP认证码来发送电子邮件 .
我需要在PHP脚本的开头使用 require_once('System.php');
,但脚本执行会超出此行 . 在Server的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 ,我将其复制到我的域名文件夹并将 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');
OUTPUT:/ usr / share / pear
shell_exec('php --ini');
OUTPUT:配置文件(php.ini)路径:/ etc加载配置文件:/etc/php.ini扫描其他.ini文件:/etc/php.d解析其他.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';在Apache日志中抛出上述错误 .
phpinfo()
编辑了一个脚本 . 它在本地值和主值中显示 include_path
为 .:/opt/plesk/php/5.6/share/pear .
我犯了什么错误?请帮忙 .
提前致谢
1 回答
通过在 php.ini 主域和所有子域中附加
shell_exec('pear config-get php_dir');
显示的路径来解决该问题 .