Настройка Π²ΠΎ врСмя выполнСния

ПовСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ зависит ΠΎΡ‚ установок Π² Ρ„Π°ΠΉΠ»Π΅ php.ini.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ писСм
Имя По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠœΠ΅ΡΡ‚ΠΎ измСнСния Бписок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
mail.add_x_header "0" INI_PERDIR Β 
mail.mixed_lf_and_crlf "0" INI_SYSTEM|INI_PERDIR ΠžΠΏΡ†ΠΈΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² PHP 8.2.4
mail.log NULL INI_SYSTEM|INI_PERDIR Β 
mail.force_extra_parameters NULL INI_SYSTEM|INI_PERDIR Β 
SMTP "localhost" INI_ALL Β 
smtp_port "25" INI_ALL Β 
sendmail_from NULL INI_ALL Β 
sendmail_path "/usr/sbin/sendmail -t -i" INI_SYSTEM Β 
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ опрСдСлСния Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² INI_* Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Π΄Π΅Π» Β«ΠœΠ΅ΡΡ‚Π° установки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ».

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ².

mail.add_x_header bool

ДобавляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ X-PHP-Originating-Script с UID скрипта ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°.

mail.log string

ΠŸΡƒΡ‚ΡŒ ΠΊ Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Ρƒ для записи Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mail(). Записи Π² Π»ΠΎΠ³Π΅ содСрТат ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ скрипта, Π½ΠΎΠΌΠ΅Ρ€ строки, адрСс получатСля To ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.

mail.mixed_lf_and_crlf bool

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строк Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΈ Ρ‚Π΅Π»Π΅ сообщСний элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ символом LF (Line Feed). Π‘ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ ядро ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ PHP 7, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ соотвСтствовало стандарту Π² части ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строк. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π²Π²Π΅Π»ΠΈ Π² цСлях совмСстимости PHP с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ (Π°Π½Π³Π». Mail Transfer Agent, MTA), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ CRLF (Carriage Return + Line Feed) ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ строк Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΈ содСрТимом сообщСний элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

mail.force_extra_parameters string

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ добавляСт Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» sendmail. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пятого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mail().

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ INI_SYSTEM допускаСт установку значСния для этой ΠΎΠΏΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ php_value Ρ„Π°ΠΉΠ»Π° httpd.conf, Π½ΠΎ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚.
SMTP string

ΠžΠΏΡ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ОБ Windows: Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ»ΠΈ IP-адрСс SMTP-сСрвСра, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обратится PHP ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΏΠΎΡ‡Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mail().

smtp_port int

ΠžΠΏΡ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ОБ Windows: ΠΏΠΎΡ€Ρ‚ SMTP-сСрвСра, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обратится PHP ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΏΠΎΡ‡Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mail(); ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 25.

sendmail_from string

ΠžΠΏΡ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ОБ Windows: адрСс для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° "From:" Π² ΠΏΠΈΡΡŒΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· SMTP-сСрвСр. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ "Return-Path:".

sendmail_path string

ΠŸΡƒΡ‚ΡŒ Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ sendmail, часто /usr/sbin/sendmail ΠΈΠ»ΠΈ /usr/lib/sendmail. Команда configure пытаСтся Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ Π°Π³Π΅Π½Ρ‚ sendmail ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ автоматичСски, Π½ΠΎ Ссли Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ получаСтся, ΠΏΡƒΡ‚ΡŒ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· эту ΠΎΠΏΡ†ΠΈΡŽ.

БистСмам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ письма Ρ‡Π΅Ρ€Π΅Π· Π°Π³Π΅Π½Ρ‚Π° sendmail, потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ замСнитСля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ sendmail, Ссли почтовая систСма содСрТит ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π°Π³Π΅Π½Ρ‚Π° » Qmail, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π°Ρ‰Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ /var/qmail/bin/sendmail ΠΈΠ»ΠΈ /var/qmail/bin/qmail-inject.

Команда qmail-inject Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ писСм.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π² ОБ Windows. ΠŸΡ€ΠΈ установкС значСния для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ PHP ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΈ smtp, smtp_port ΠΈ sendmail_from ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 3 notes

up
27
elitescripts2000 at yahoo dot com ΒΆ
12 years ago
On Ubuntu 13.04, not sure of the other Distros. 

If you simply uncomment the default:

sendmail_path = "sendmail -t -i"

Your mail() functions will all fail.  This is because, you should place the FULL PATH (i.e.  /usr/sbin/sendmail -t -i ) 

The documentation states PHP tries it's best to find the correct sendmail path, but it clearly failed for me.

So, always enter in the FULLPATH to sendmail or you may get unexpected failing results.

As a secondary note:  Those that just want to ENFORCE the -f parameter, you can do so in php.ini using: 

mail.force_extra_parameters = -fdo_not_reply@domain.tld

You can leave the sendmail path commented out, it will still use the defaults  (under UNIX  -t -i options which if you look them up are very important to have set)....

But, now there is no way to change this, even with the 5th argument of the mail() function.  -f is important, because if NOT set, will be set to which ever user the PHP script is running under, and you may not want that.

Also, -f  sets the Return-Path:  header which is used as the Bounce address, if errors occur, so you can process them.  You you can not set Return-Path: in mail() headers for some reason... you could before.  Now you have to use the -f option.
up
2
php dot net at ii0 dot net ΒΆ
9 years ago
If anyone gets this cryptic error message in the PHP error logs:
"sh: -t: command not found"
after upgrading from PHP 5.4, this may be the solution for you.

I upgraded PHP from 5.4 to 5.6 and all our mail() functionality suddenly broke, with no useful error logging.

If this is you, and you've been using ini_set() to set the "sendmail_path" then note that even though it's apparently not mentioned in the upgrade documentation -- or anywhere else I could find on php.net (or a dozen forums) -- you'll now need to go set the sendmail_path in your php.ini file; it is now ignored if you use ini_set() to specify a path to the sendmail binary on the fly.

So, just specify "sendmail_path" in php.ini instead.  That's all there is to it -- that fixed all the mail() functionality for us.  

Hope this little note saves someone else as much time as I spent troubleshooting and researching.  Cheers!
up
0
jscholz at wisc dot edu ΒΆ
4 years ago
The documentation should be made clear that sendmail does NOT default to -t -i when using just /usr/sbin/sendmail. You literally need to specify the options. 

I know this might seem like a no-brainer but I wasted hours trying to get mail() to work only to discover that the sendmail program is NOT passed -t and -i by default as stipulated in the documentation.