PHP'mi nasıl alabilirim?

68

Ubuntu 11.04, LAMP görevlerini kullanarak yükledim.

PHP mail() 'nin çalışmadığını tespit ediyorum.

Sanırım onu ​​etkinleştirmem gerekiyor mu? Bunu nasıl yaparım?

    
sordu JM at Work 08.06.2011 12:25

7 cevap

51

php’nin posta el kitabından:

  

Koşullar

     

Posta işlevlerinin olması için   mevcut, PHP yüklü bir gerektirir   ve çalışan e-posta sistemi. Program   Kullanılmak üzere tanımlanır   php.ini içindeki yapılandırma ayarları   dosyası.

Bunun anlamı, bir çeşit sunucu sunucusunu yüklemeniz ve bunu kullanmak için php'yi yapılandırmanız gerektiği anlamına gelir. Genellikle bu posta sunucusu Ubuntu'da bir sonek. Ancak - kodlama yaptığınız php tarafı, bir barındırma hizmetinin tarafında saklanacaksa (ör., Xmission), bir posta sunucusu büyük olasılıkla oraya yüklenecektir. Bu durumda, sitenizi yerel olarak değil de online olarak test edin.

Kendi sisteminizde test etmeniz gerekiyorsa veya kendi ana sunucunuzda barındırmak istediğinizden emin olmak istiyorsanız:

Postfix Kurulumu

Kurulum: postfix / sudo apt-get install postfix İşlem sırasında, postfix'in hangi modda kurulmasını istediğiniz sorulur. Dört olası mod vardır:

  • İnternet : Kendi posta sunucunuz.
  • Uydu : Posta göndermek ve almak için bir harici posta sağlayıcısı (ör. Google) kullanılacaktır. Sunucu herhangi bir posta almayacak.
  • Smarthost : İkisi arasındaki karışım. Posta yerel olarak depolanır ancak harici bir posta sağlayıcısı aracılığıyla gönderilir.
  • Yalnızca yerel : Sizi ilgilendirmez. Bu bir sistem interneti sunucusu. Kullanıcıdan yalnızca sistemdeki kullanıcıya posta gönderebilirsiniz.

Yükleme seçeneklerinin geri kalanı, bu genel yapılandırmayı seçtiğinize bağlıdır.

Büyük olasılıkla bir uydu kurulumu seçeceksiniz. Bu, bir extern sağlayıcı kullanılarak posta gönderileceği anlamına gelir. Smtp sunucusu (giden posta sunucusu) olarak, sağlayıcılarınızı smtp belirtmeniz gerekecektir. Seçeneklerin geri kalanı kendini açıklayıcıdır.

Yükleme Sonrası Yapılandırma

Çoğu smtp sunucusu, posta göndermek için bir parola doğrulaması gerektirir. Yani postfix'in bu şifreyi bilmesi gerekecek. Ayrıca, göz önünde bulundurulması gereken şifreleme gibi şeyler de vardır (google'a). Parola kimlik doğrulaması (sasl) kullanarak postfix'i nasıl yapılandırırsınız:

  • Yükle libsasl2-modules < img src="https://i.stack.imgur.com/9SOjZ.png"> ve sasl2-bin < img src="https://i.stack.imgur.com/9SOjZ.png"> Yazılım Merkezi simgelerini tıklayarak veya aşağıdakilerden birini kullanarak:

    sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
    
  • Bu satırları /etc/postfix/main.cf

    öğesine ekleyerek sasl-auth özelliğini etkinleştirin
     # add to /etc/postfix/main.cf
     smtp_sasl_auth_enable = yes
     smtp_sasl_security_options = noplaintext noanonymous
     smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
    
  • Aşağıdaki gibi bir dosya ile /etc/postfix/sasl_password dosyası oluşturun:

     smtp.gmail.com [email protected]:USERPASSWORD
    

    Gerçek şifreyi, kullanıcı adını ve smtp adresini değiştirin.

  • Postfix'i güncelle:

     sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
     sudo postmap hash:/etc/postfix/sasl_password 
     sudo postmap /etc/postfix/sender_canonical
     sudo /etc/init.d/postfix restart   
    

    " izni, 'hata%' nı chown postfix:postfix /etc/postfix önceden reddetti.

Bu, çoğu durumda yapmalı. Yine de bazı smtp sağlayıcıları gönderen veya şifreleme olarak belirli bir adres ister.

İlgili: PEAR :: Mail arayüzü de olabilir ilginizi çekecek.

Gmail (ve belki de diğer hizmetler), postalarını standartlarına göre güvenli olarak kabul edilebileceği şekilde göndermeyi ve girişinizi engelleyeceğini, örneğin ekranda veya ekranda bir şey olmayacağını beğenmeyebilir. işlem kimlik doğrulamanızı engellerdi. Ayrıca, POP3’ünüz etkinleştirilmelidir.

Burada görmek için sayacı. (Güvenli tarafta olmak istiyorsanız, sahte bir Gmail hesabı oluşturun)

    
verilen cevap con-f-use 08.06.2011 13:33
58

Daha önce de belirttiğimiz gibi, ev bilgisayarınızda uygulamalar geliştirirken sadece e-postaları php'den göndermeniz gerekiyorsa, postfix aşırı bir sıkıntı olacaktır.

Şahsen çok basit ve hafif bir paket ssmtp kullanıyorum. Giden e-postalar göndermek için herhangi bir smtp sunucusu kullanacaktır. Çalıştırarak yükleyin:

sudo apt-get install ssmtp

Sonra /etc/ssmtp/ssmtp.conf dosyasını düzenleyin, varolan mailhub satırını yorumlayın ve aşağıdaki satırları ekleyin (bu örnek gmail smtp sunucusu içindir):

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>

(gmail kullanıcı adınızı ve şifrenizi girin. Tabii ki başka bir SMTP sunucusunu kullanabilirsiniz).

Şimdi php.ini dosyanızın sendmail_path doğru olduğundan emin olun. Şu şekilde okumalı:

sendmail_path = /usr/sbin/sendmail -t

( @ dima-l ve @ omar-sabic yorumlarından : Burada ssmtp değerini belirtmeniz gerekmez, çünkü yükleme işlemi /usr/sbin/sendmail için bir sembolik bağlantı oluşturmuş olmalıdır. ssmtp . Aksi takdirde sendmail_path = /usr/sbin/ssmtp -t değerini belirtmeniz gerekir)

Apache'yi yeniden yükle ve php'in artık giden e-postaları gönderebilmesi gerekiyordu.

    
verilen cevap Dima L. 29.10.2013 20:08
27

PHP, bir SMTP istemcisinin posta göndermesini gerektirir. Bunu sunmak için Postfix gibi tam özellikli bir posta aktarım aracısı (MTA) yükleyebilirsiniz. işlevi, ancak sadece PHP ile posta göndermeniz gerekiyorsa overkill. Bunun yerine, msmtp 'yi yükleyin. Yapılandırmak için hafif ve çok daha basit.

msmtp'yi yükle

sudo apt-get install msmtp-mta ca-certificates

Yapılandırın

Yeni bir yapılandırma dosyası oluşturun:

sudo vi /etc/msmtprc

... aşağıdaki yapılandırma bilgileri ile:

# Set defaults.
defaults

# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <[email protected]>
password <password>
from <[email protected]>
syslog LOG_MAIL

"& lt;" içindeki her şeyin temsil ettiği yapılandırma verilerini değiştirmeniz gerekir. ve "& gt;" (dahil, bunları kaldırmak). Ana makine / kullanıcı adı / şifre için posta sağlayıcınızdan posta göndermek için normal kimlik bilgilerinizi kullanın.

PHP’nin kullanmasını söyle

sudo vi /etc/php5/apache2/php.ini

Bu tek satırı ekleyin:

sendmail_path = /usr/bin/msmtp -t
    
verilen cevap colan 29.04.2012 21:19
3

Basit bir düzeltme olmalı. Sadece gerçek e-postayı yapan Postfix'i kurmanız gerekir.

sudo apt-get install postfix

Bunu bir terminalden (yazılım merkezi değil) çalıştırmak istersiniz, çünkü size birkaç kurulum sorusu sormalıdır. Tüm varsayılanları (yalnızca yerel, vb.) Kabul etmelisiniz.

    
verilen cevap Oli 08.06.2011 12:47
2

Bu eski bir soru ve yukarıda değere değecek cevaplar var, ancak çevrem için% co_de değerine ihtiyacım vardı. Ayrıca, ilk olarak sendmail'in yüklü olduğunu doğrulayın ( exim - / usr / sbin / sendmail gibi bir şey döndürmelidir). linode.com adresinde iyi bir rehber buldum, ancak gist şudur:

apt-get install exim4-daemon-light mailutils

ardından:

dpkg-reconfigure exim4-config

sizi etkileşimli bir editöre yönlendirecek.

    
verilen cevap vrobinson 30.04.2014 23:46
1

Harika yanıt , kullanım-kullanımı.

"Kukla gmail hesabı" hakkında eklemek istediğim bir şey var:

Bu, gmail hesabınızı daha az güvenli uygulamalara izin verecek şekilde yapılandırmanız gerektiğinden önemle tavsiye edilir: İşte Aksi takdirde "lütfen web tarayıcınızı kullanarak giriş yapın ve ardından tekrar deneyin" hata iletisini /var/log/mail.log dosyanızdan alırsınız.

Ayrıca gmail smtp kopyasını kök sertifikamı göndermediğimde zaman aşımı hatası aldığımı buldum. Bunu yapmak için:

sudo nano /etc/postfix/main.cf

Aşağıdakileri dosyanın altına ekleyin

smtp_tls_CAfile = /etc/postfix/cacert.pem

Sonra, çözme kök sertifikasını cacert.pem dosyasına kopyalayın:

cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem

Kullandığım bağlantı şu şekildedir: Postfix'i Ubuntu'da Gmail SMTP Kullanacak Şekilde Yapılandırma | EasyEngine

Umarım bu bir kaç saç kökü kurtarır ...

    
verilen cevap deputy_D 25.05.2016 19:12
0

Dima L. tarafından sağlanan çözümleri en kolay şekilde buldum & amp; sisteme hafiftir.

Ayarlamada daha fazla netlik için sadece bazı eklemeler. % Co_de% dosyasını hostname dosyasında yorumlamalısınız. Örnek /etc/ssmtp/ssmtp.conf dosyası aşağıdaki gibidir:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
[email protected]
AuthPass=YOUREMAILPASSWORD

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
    
verilen cevap SD. 13.04.2018 08:33

Etiketlerdeki diğer soruları oku