2016-10-23 61 views
9

Pracuję nad formularzem kontaktowym dla strony internetowej. Ten formularz kontaktowy realizowany jest za pośrednictwem PHP. Byłem able to configure my local environment, aby to działało, ale po wdrożeniu do produkcji funkcjonalność zniknęła.pośrednia konfiguracja php.ini dla domeny na wielu domenach IIS 8.5 z Plesk

Z mojego punktu widzenia głównym powodem, dla którego nie działa on w produkcji, jest to, że php.ini nie ma takiej samej konfiguracji jak na moim komputerze lokalnym. Oto kilka problemów:

  • Nie mam żadnej kontroli po stronie produkcyjnej, co oznacza, że ​​nie mogę uzyskać dostępu do serwera php.ini.
  • Serwer ma wiele domen połączonych z nim, więc zmiana globalnej konfiguracji php.ini prawdopodobnie zepsuje coś, co byłoby bardzo złe.

informacje udało mi się znaleźć:

  • Server Windows Server 2012 R2 v6.2 z IIS 8.5.
  • Plesk pokazuje PHP 5.4.45 running as FastCGI application

Również jeden z moich ustaleń było (nic dziwnego), aby rozpocząć korzystanie z rozwiązania firm trzecich jak Mailgun lub Mandrill. Mandrill jest teraz wtyczką do Mailchimp, co może być bardzo przydatne, ponieważ już używam Mailchimp dla tego projektu. Ale nie chcę iść na trzecią stronę, ponieważ projekt ma serwer i brakuje tylko właściwej konfiguracji.

UPDATE: Dzięki odpowiedź od @oleg_neumyvakin I odkryli, że pośrednia zmiana poszczególnych domen może się odbywać za pomocą .user.ini konfiguracji lub gdybym miał dostęp do Plesk poprzez Additional Configuration Directives dziedzinie. Chociaż dyrektywa sendmail_path nie jest dostępna dla pliku .user.ini, ponieważ może być modyfikowana tylko w PHP_INI_SYSTEM - globalna php.ini.

Moje pytanie nadal pozostaje otwarte:

Odpowiedz

1

"SMTP", "smtp_port" i "sendmail_from" - są OK, aby być za domenę, ale "sendmail_path" dozwolone dla PHP_INI_SYSTEM tylko: http://php.net/manual/en/ini.list.php

Można ustawić je poprzez

  • /httpdocs/.user.ini z zawartością jak:

    [PHP] 
    display_errors=on 
    error_reporting=32759 
    log_errors=off 
    max_execution_time=120 
    max_input_time=90 
    memory_limit=64M 
    open_basedir="C:\Inetpub\vhosts\example.tld\httpdocs\;C:\Windows\Temp\" 
    post_max_size=16M 
    short_open_tag=off 
    upload_max_filesize=16M 
    error_log="C:\Inetpub\vhosts\example.tld\logs\php_errors\example.tld\php_error.log" 
    
  • Plesk UI w ustawieniach PHP domeny>:

plesk per-domain PHP settings

I dodać niezbędne ustawienia dodatkowych dyrektyw:

plesk PHP settings

Jak upewnić się, że te zmiany nie wpłyną na globalne ustawienia PHP?

Przede wszystkim można ustawić niektóre dyrektywy do jednej domeny i sprawdzić phpinfo() dla innej domeny. Wszystkie dyrektyw zwyczaj PHP są ustawienia per-katalogu i można je znaleźć w rejestrze Windows: PHP Windows per-directory settings

+0

Chyba że masz dołączone zdjęcia bezpośrednio z serwera i Plesk, ale wyraźnie zaznaczyć, że nie mam żadnego dostępu/kontrola po stronie produkcyjnej - serwer. Zaktualizowałem moje pytanie. – alljamin

+0

@alljamin Nie edytowałem żadnego pliku php.ini ani nie zmieniłem ręcznie kluczy rejestru. Zmienię tę dyrektywę za pośrednictwem interfejsu Plesk. –

+0

@alljamin Btw, "SMTP", "smtp_port" i "sendmail_from" - można ustawić za pomocą tych dyrektyw, ale "sendmail_path" nie będzie miało żadnego efektu, ponieważ zezwala na tylko PHP_INI_SYSTEM: http://php.net/manual/ pl/ini.list.php –