Почему можно отправлять электронную почту в интерактивном режиме php вместо apache? - PullRequest
0 голосов
/ 29 сентября 2018

Это Centos7, на котором работает сервер Apache.

ps aux|grep apache
apache    3153  0.0  1.2 455408  3160 ?        S    10:44   0:00 /usr/sbin/httpd -DFOREGROUND
apache    3154  0.0  1.2 455408  3164 ?        S    10:45   0:00 /usr/sbin/httpd -DFOREGROUND
root      3239  0.0  0.3 112656  1000 pts/0    S+   15:09   0:00 grep --color=auto apache

php72 -a, войдите в интерактивный режим php72.

require_once('/home/bwg/vendor/autoload.php');
require '/home/bwg/vendor/phpmailer/phpmailer/src/Exception.php';
require '/home/bwg/vendor/phpmailer/phpmailer/src/SMTP.php';
require '/home/bwg/vendor/phpmailer/phpmailer/src/PHPMailer.php';
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSMTP(); 
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.qq.com";
$mail->Port = 465; 
$mail->IsHTML(true);
$mail->Username = "xxxx@qq.com";
$mail->Password = "zzzz";
$mail->SetFrom("xxxx@qq.com");
$mail->Subject = "test";
$mail->Body = "hello";
$mail->AddAddress("yyyy@yahoo.com");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}

Я могу получить письмо в Yahoo Mail от xxxx @ qq.com, когда выполнять все вышеперечисленные команды в интерактивном режиме php72.

Добавить <?php в начале и ?> в конце, сохранить все вышеприведенные строки как /var/www/html/send.php, набрать http://vps_ip/send.php, выполнитьиз-за следующих ошибок:

Предупреждение: require_once (/home/bwg/vendor/autoload.php): не удалось открыть поток: доступ запрещен в /var/www/html/send.php на линии2

ls  -al /home/bwg/vendor
total 20
drwxrwxrwx 4 apache apache 4096 Sep 23 07:55 .
drwx------ 5 bwg    bwg    4096 Sep 23 11:10 ..
-rwxrwxrwx 1 apache apache  178 Sep 23 07:55 autoload.php
drwxrwxrwx 2 apache apache 4096 Sep 23 07:55 composer
drwxrwxrwx 3 apache apache 4096 Sep 23 07:55 phpmailer

Apache имеет разрешение на чтение и выполнение файлов в /home/bwg/vendor.

Неустранимая ошибка: require_once (): сбой открытия обязателен '/home/bwg/vendor/autoload.php' (include_path = '.: / Usr / share / php: / usr / share / pear') в /var/www/html/send.php в строке 2

find / -name  "php.ini"
/etc/opt/remi/php72/php.ini
/etc/php.ini

Оба /etc/opt/remi/php72/php.ini и /etc/php.ini были добавлены строки:

include_path='.:/usr/share/php:/usr/share/pear' 

Проверка/usr/share/php.

[root@localhost ~]# ls  -al  /usr/share/php
total 40
drwxr-xr-x 10 root root 4096 Sep 23 07:54 .
drwxr-xr-x 89 root root 4096 Sep 29 10:38 ..
drwxr-xr-x 24 root root 4096 Sep 23 07:54 Composer
drwxr-xr-x  3 root root 4096 Sep 23 07:54 Fedora
drwxr-xr-x  7 root root 4096 Sep 23 07:54 JsonSchema5
drwxr-xr-x  2 root root 4096 Sep 23 07:54 password_compat
drwxr-xr-x  3 root root 4096 Sep 23 07:54 Psr
drwxr-xr-x  2 root root 4096 Sep 23 07:54 random_compat
drwxr-xr-x  4 root root 4096 Sep 23 07:54 Seld
drwxr-xr-x  6 root root 4096 Sep 23 07:54 Symfony

Проверка /usr/share/pear.

[root@localhost ~]# ls  -al  /usr/share/pear
total 112
drwxr-xr-x  8 root root  4096 Sep 29 10:38 .
drwxr-xr-x 89 root root  4096 Sep 29 10:38 ..
drwxr-xr-x  3 root root  4096 Sep 29 10:38 Archive
drwxr-xr-x  3 root root  4096 Sep 29 10:38 Console
drwxr-xr-x  2 root root  4096 Sep 29 10:38 OS
drwxr-xr-x 11 root root  4096 Sep 29 10:38 PEAR
-rw-r--r--  1 root root 15170 Aug 23 04:33 pearcmd.php
-rw-r--r--  1 root root 35466 Aug 23 04:33 PEAR.php
-rw-r--r--  1 root root  1019 Aug 23 04:33 peclcmd.php
drwxr-xr-x  3 root root  4096 Sep 29 10:38 Structures
-rw-r--r--  1 root root 20574 Aug 23 04:33 System.php
drwxr-xr-x  3 root root  4096 Sep 29 10:38 XML

Чтобы проверить мой сервер apache.

[root@localhost ~]# sudo -u apache bash
bash-4.2$ exit
exit
[root@localhost ~]# cat /home/bwg/vendor/autoload.php
<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit7dc2a253d795f81faddcb2888816128a::getLoader();
[root@localhost ~]# ps aux|grep php
root      3264  0.0  0.3 112656   996 pts/0    S+   15:27   0:00 grep --color=auto php
[root@localhost ~]# ps aux|grep php72
root      3266  0.0  0.3 112656  1000 pts/0    S+   15:27   0:00 grep --color=auto php72
...