PHP funkcja mail() na IIS WS2012

Wgrywam phpmailer ze strony projektu…

Piszą, że jest możliwość wgrania ręcznie i tak chcę zrobić. i tu pytanie:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Do czego służą te linijki? Później są jeszcze takie (już ustawione źródło dla mojej strony):

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

Ale z nimi nie mam problemu. Podaje ścieżkę do trzech plików wymaganych.

Bo znowu mam komunikat że “strona nie działa” (błąd 500).

P.S.
Nie ma chyba też wyższej wersji PHP na IIS. Przynajmniej na stronie IIS 5.3 jest najwyższą wersją.

Pokaż logi.

http://php.net/manual/en/language.namespaces.importing.php

W logach błędów php mam taki błąd:

[11-Dec-2017 09:59:23 Europe/Belgrade] PHP Parse error: syntax error, unexpected '[' in C:\inetpub\strona\phpmailer\src\PHPMailer.php on line 288

Czyli to kwestia niekompatybilności zainstalowanej wersji PHP i wersji PHPMailera. Ponowię pytanie o zasadność korzystania z IIS do hostowania aplikacji PHP?

Mam windows serwer 2012 na którym stoi już exchange i jest zainstalowana rola IIS. Dlatego właśnie na IISie…

XAMPP - darmowy również do zastosowań komercyjnych? Strona firmowa ma tam stać…

czyli phpMailer odpada, bo na IIS nie ma wyższej wersji php;/

Swiftmailer wymaga PHP 7.x? Nie mylę się?

A jakieś porady jak uruchomić jednak funkcję mail()?

Sam XAMPP jako manager jest darmowy do celów komercyjnych. Zastrzegają jednak, że należy sprawdzić licencje składników wchodzących w skład pakietu. Apache jest darmowy do celów komercyjnych, więc instalując XAMPPa wyłącznie z PHP możesz śmiało korzystać z niego w firmie. Oczywiście lepiej byłoby postawić osobno Apache skrojone na miarę Twojego serwera, ale skoro, jak sam określiłeś, jesteś noga z PHP i mimo to konfigurujesz to w firmie, to albo płacisz komuś kto zrobi to za Ciebie, albo zostajesz przy takim domyślnym pakiecie z XAMPPem, z PHP 7.1 i możesz używać dowolnej biblioteki do obsługi maili jaka przyjdzie Ci na myśl bo nie jesteś przykuty do jakiegoś starożytnego buildu PHP.

Wiesz, to nie jest żaden wielki projekt, tylko podstawowa strona w html. Problem stanowi dla mnie jedynie ten formularz kontaktowy…

Szukałem turtoriali jak to zrobić i nigdzie nie było informacji że, żeby skorzystać z funkcji mail() na windowsie trzeba doinstalowywać jakieś programy czy dodatkowo coś konfigurować (php.ini). Wydawało się to być banalnie proste…

Xampa na pewno zaraz zainstaluje sobie lokalnie, przyda się do sprawdzania stron z php lokalnie na kompie.

A na serwerze instaluje tylko xampa i funkcja mail() będzie działała bez problemów?
Ponawiam: Bez xampa na IIS, co bym musiał zrobić, żeby odpalić funkcję mail()?

Niekoniecznie, być może trzeba też odpowiednio skonfigurować php.ini - http://ca2.php.net/manual/en/mail.configuration.php#ini.smtp albo użyć do wysyłki innej biblioteki - jak właśnie te podane powyżej, żeby zdefiniować serwer SMTP. Kiedyś nie trzeba było tego robić bo porty poczty wychodzącej nie były poblokowane. W tej chwili robi się to na poziomie sieci w celu ograniczenia ilości spamu.

Już Ci pisaliśmy. Zainstalować wersję PHPMailera która zadziała z Twoją aktualną wersją PHP zainstalowaną na IIS.

Głupoty gadasz … mail() dalej nie będzie działała. Poza tym sam pomysł stawiania produkcyjnego serwera WWW na XAMPPie jest przepraszam, ale nic innego do głowy mi nie przychodzi, głupi. XAMPP służy do czegoś innego.

Możesz używać do celów komercyjnych, ale w tym przypadku to nie ma sensu.

Jak to nie masz? Możesz zainstalować sobie dowolną wersje, 10 sekund szukania w google: http://php.net/manual/pl/install.windows.iis7.php. Wystarczy włączyć obsługę fastCGI w IIS i możesz podpiąć dowolną wersje PHP. W ogóle dziwie się, że masz zainstalowanego PHP jako moduł bo w takiej formie jest dużo wolniejszy.
Swiftmail jest kompatybilny z PHP 7.0, ale działa też na 5.X, ale nie pamiętam od której dokładnie wersji.

To może lepiej wykorzystać zewnętrzny hosting za 5zł/mc?

Ponieważ w 98% przypadkach serwerem dla aplikacji PHP jest linux. Konfiguracja to kwestia podpięcia się do Exchange przy pomocy konfiguracji ustawień: http://php.net/manual/en/mail.configuration.php oraz konfiguracja Exchange tak by zezwalał na wysyłkę maili.

Nie dalej nie będzie działała.

Skonfigurować mail_function w PHP, link wyżej.

O czym Ty piszesz? Mieszasz informacje … owszem port 25 został zablokowany, ale głównie użytkownikom neostrady. Jednak w żaden sposób nie wpłynęło to na możliwość wysyłki maili przez tych użytkowników, dalej mogą wysłać maila ze swojego komputer (nie, nie mam na myśli klienta webowego). SMTP działa na 3 portach, 25, 587 i 465 (SMTPs). Port 587 został dodany właśnie po zablokowaniu 25 przez tp. Niestety od zawsze na Windowsie nie dało się użyć od razu funkcji mail bez konfiguracji PHP. Nie ma to nic wspólnego z blokowaniem portów, a z brakiem preinstalowanego klienta SMTP w systemie Windows, którego z kolei WYMAGA PHP bo sam nie ma go zaimplementowanego.

Zobacz jak pomagasz:

kilka postów niżej:

Więc jak to jest w końcu według Ciebie, będzie działać OOTB czy nie? Bo jak trzeba będzie skonfigurować PHP to jesteśmy w tym samym miejscu co z IIS, pytanie tylko po co kazałeś instalować tyle softu na serwerze (Apache - kolejny serwer HTTP, MariaDB - niepotrzebny serwer DB, PHP - kolejny interpreter oraz kolejnych serwerów SMTP i POP3/IMAP) skoro w niczym to nie pomoże?

EDIT:
Do Autora:
Nie umiem powiedzieć Ci co będzie dla Ciebie łatwiejsze bo nie wiem co umiesz. Mówisz, że nie znasz się na PHP, problem w tym, że tutaj nie rozchodzi się o znajomość PHP lecz o umiejętność programowania. Po Twoich postach wnioskuję, że na administracji serwerami też średnio się znasz, dlatego też nie powiem Ci zrób to i to, bo tak rzeczywistość nie działa. Są różnie systemy (nie chodzi o systemy operacyjne, a w sensie setupu) i różne rzeczy możesz mieć tam zainstalowane i może to nie wystarczyć, albo takie kroki mogą coś popsuć. Niestety nikt Ci w tym nie pomoże bo nie ma dostępu do Twojego serwera.
Owszem mogę powiedzieć, zmień to i to w tym i tym, ale jak to nie zadziała i wywali Ci cały serwer to zaraz wrócisz i będziesz miał pretensje do mnie, że się coś popsuło. Dlatego jeśli sam nie umiesz zaktualizować PHP i go skonfigurować to poproś o pomoc administratora tego serwera, od czegoś on w końcu jest. Chociaż z drugiej strony wnioskując po tym co piszesz to serwer nie jest jakoś dobrze skonfigurowany, więc raczej szukałbym innego admina. Raczej jest to konfiguracja “byle działało, a dalej będziemy się modlić, żeby nic się nie wysypało”.

PS. Nie słuchaj też wszystkich rad jakie ludzie dają Ci w internecie, bo zwyczajnie trafiają się różni “specjaliści”.

W tej chwili autor walczy z odpaleniem biblioteki. Przy XAMPPie kwestię wersji PHP przynajmniej będzie miał z głowy i pierwszy lepszy przykład PHPMailera mu ruszy.

Czytaj ze zrozumieniem. Pisałem o instalacji samego Apache’a.

Ok, zgadzam się, tylko ile sensu ma instalowanie kolejnych tych samych usług które już ma. Tym bardziej, że do obecnego zestawu wystarczy doinstalować nowszą wersję PHP i biblioteki też ruszą.

Przeczytałem drugi raz, jest to odpowiedź na pytanie "A na serwerze instaluje tylko xampa i funkcja mail() będzie działała bez problemów?"
O samym Apache wspominałeś w innym poście, że lepiej byłoby zainstalować go zamiast XAMPPa i na tym temat samego Apache został urwany.

XAMPP został przeze mnie zaproponowany jako prosta alternatywa dla uruchomienia obsługi PHP na serwerze (ponieważ w tej chwili autor walczy na 3 frontach - IIS, niekompatybilna wersja PHP i PHPMailera oraz samo wysyłanie maili). XAMPP nie jest narzędziem do stosowania na serwerach produkcyjnych, dlatego wspomniałem o czystym Apache’u - ale jego konfiguracja nie jest tak prosta jak XAMPPa, dlatego tematu nie ciągnąłem dalej.

Moją intencją - najwyraźniej źle zinterpretowaną - było rozwiązanie problemu przez usuwanie nieznaczących na obecnym etapie problemów i doprowadzenie do uzyskania minimalnego działającego rozwiązania - które potem można dostosować do potrzeb i wymagań choćby przez odpalenie tego samego kodu na IIS albo wywalenie tego na inny serwer.

Dlatego moja propozycja dla autora jest taka:

  1. Zainstaluj XAMPPa z samym Apachem, PHP w wersji 7.1
  2. Odpal przykładowy kod z PHPMailera z https://github.com/PHPMailer/PHPMailer/wiki/Tutorial
  3. Jeśli nie zadziała - rozwiązujesz problem na tym etapie (Swiftmailer, może jakaś dodatkowa wymagana konfiguracja, a może firewall? powodów może być wiele). Jeśli zadziałało…
  4. Przenosisz to na wybrany serwer, choćby IIS. Działa?
  5. Nie działa - rozwiązujesz problem z kompatybilnością skryptu na IIS. Działa? Problem rozwiązany.

Od siebie dodam tylko, że dla mnie wsparcie PHP na IIS jest zabiegiem czysto marketingowym, żeby Microsoft mógł tak bardzo mówić, że są tacy otwarci dla Linuxa i otwartego oprogramowania. Ale to moja prywatna opinia.

1 polubienie

No i teraz jasne, od siebie mogę jedynie do tego dodać by XAMPPa nie instalować na serwerze, a na komputerze na którym pracuje. Różnica będzie taka, ze nie zaśmieca serwera.

Jedno pytanie… Wywala mi błąd:

Message could not be sent.Mailer Error: Extension missing: openssl

a w php.ini odkomentowałem linijkę:

extension=php_openssl.dll

Czym jeszcze może być spowodowany błąd?

Jaką masz wersję PHP? I jaką masz wersję PHPMailera?

PHP w wersji 7.1
PHPMailer 6.0.2

Jak odpalisz phpinfo(); to pojawia się sekcja openssl?

Tak

Czy masz w systemie pliki bibliotek: php_openssl.dll, libeay32.dll , ssleay32.dll ? Czy są dostępne przez PATH, czyli albo są w ścieżce wskazaną przez PATH albo siedzą w Windows/System32 ?

Trochę improwizuję w tej chwili, ale powoli kończą mi się pomysły co może być nie tak…

Tak. Wszystkie pliki są na miejscu…