2016-10-23 93 views
9

我正在爲網站的聯繫表格。這個聯繫表格是通過PHP實現的。我是able to configure my local environment爲此工作,但部署到生產後,功能消失了。間接php.ini配置每域在多域IIS 8.5與Plesk

從我的角度來看,它不在生產環境中工作的主要原因是php.ini與我的本地計算機沒有相同的配置。這裏出現幾個問題:

  • 我沒有任何生產端的控制權,這意味着我無法訪問服務器上的php.ini
  • 服務器有多個域連接到它,所以更改php.ini的全局配置可能會破壞某些東西,這將是非常糟糕的。

我能找到的信息:

  • 服務器爲Windows Server 2012 R2 V6.2與IIS 8.5。
  • 的Plesk顯示PHP 5.4.45 running as FastCGI application

而且我的發現之一是(毫無疑問)開始使用第三方解決方案像MailgunMandrill。 Mandrill現在是Mailchimp的插件,可能非常有用,因爲我已經在此項目中使用了Mailchimp。但我不想去第三方,因爲該項目有一臺服務器,只是缺少一個適當的配置。

UPDATE: 感謝來自@oleg_neumyvakin我發現,每間接域修飾可以通過.user.ini配置來完成答案,或者如果我通過Additional Configuration Directives領域已擁有訪問Plesk。儘管sendmail_path指令不適用於.user.ini,因爲它只能在PHP_INI_SYSTEM - 全局php.ini中修改。

我的問題仍然是開放的:

回答

1

「SMTP」, 「SMTP_PORT」 和 「sendmail_from」 - 是確定爲每域,但允許唯一PHP_INI_SYSTEM 「sendmail_path」:http://php.net/manual/en/ini.list.php

您可以通過設置這些

  • /httpdocs/.user。INI文件中包含的內容:

    [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在域的PHP設置>:

plesk per-domain PHP settings

而且額外的指令添加必要的設置:

plesk PHP settings

如何確保這些更改不會影響全局PHP設置?

首先,您可以設置一些指令到一個域,並檢查另一個域的phpinfo()。 所有定製的PHP指令是基於目錄的設置,你可以找到他們在Windows註冊表中: PHP Windows per-directory settings

+0

我想你已經從服務器和Plesk直接連接的截圖,但我明確地提到,我沒有任何訪問/控制到生產端 - 服務器。我更新了我的問題。 – alljamin

+0

@alljamin我沒有編輯任何php.ini或手動更改註冊表項。我已通過Plesk UI更改此指令。 –

+0

@alljamin Btw,「SMTP」,「smtp_port」和「sendmail_from」 - 可以通過此指令設置,但「sendmail_path」將不起作用,因爲它僅允許PHP_INI_SYSTEM:http://php.net/manual/ en/ini.list.php –