使用Plesk的多域IIS 8.5上的每个域的间接php.ini配置

时间:2016-10-23 01:57:51

标签: php email iis plesk windows-server-2012-r2

我正在处理该网站的联系表格。此联系表单通过PHP实现。为此,我able to configure my local environment工作,但在部署到生产后,功能已经消失。

从我的角度来看,它不能在生产中工作的主要原因是php.ini与本地计算机上的配置不同。这里出现了几个问题:

  • 我对生产方没有任何控制权,这意味着我无法访问服务器上的php.ini
  • 服务器有多个域连接到它,因此更改php.ini的全局配置可能会破坏某些内容,这将非常糟糕。

我能找到的信息:

  • 服务器是带有IIS 8.5的Windows Server 2012 R2 v6.2。
  • Plesk显示PHP 5.4.45 running as FastCGI application

我的一项发现也是(毫不奇怪)开始使用第三方解决方案,例如MailgunMandrill。 Mandrill现在是Mailchimp的插件,因为我已经在这个项目中使用了Mailchimp,所以它非常有用。但我不想去第三方,因为该项目有一个服务器,只缺少一个正确的配置。

更新 感谢@oleg_neumyvakin的回答,我发现间接的每域修改可以通过.user.ini配置完成,或者我可以通过Additional Configuration Directives字段访问Plesk。虽然sendmail_path指令不适用于.user.ini,因为它只能在PHP_INI_SYSTEM - 全局php.ini中修改。

我的问题仍然存在:

1 个答案:

答案 0 :(得分:1)

“SMTP”,“smtp_port”和“sendmail_from” - 可以是每个域,但仅允许“sendmail_path”用于PHP_INI_SYSTEM: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"
    
  • 在域的PHP设置中
  • Plesk UI > :

plesk per-domain PHP settings

并为其他指令添加必要的设置:

plesk PHP settings

  

如何确保这些更改不会影响全局PHP设置?

首先,您可以将一些指令设置为一个域,并检查另一个域的phpinfo()。 所有自定义PHP指令都是按目录设置,您可以在Windows注册表中找到它们: PHP Windows per-directory settings