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

all*_*min 9 php email iis plesk windows-server-2012-r2

我正在处理该网站的联系表格.此联系表单通过PHP实现.我能够配置我的本地环境以实现此功能,但在部署到生产后,功能已经消失.

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

  • 我对生产方没有任何控制权,这意味着我无法php.ini在服务器上访问.
  • 服务器有多个域连接到它,所以改变全局配置php.ini可能会破坏一些东西,这将是非常糟糕的.

我能找到的信息:

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

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

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

我的问题仍然存在:

Ole*_*kin 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"
    
    Run Code Online (Sandbox Code Playgroud)
  • Plesk UI位于域的 PHP 设置 > :

Plesk 每个域的 PHP 设置

并向附加指令添加必要的设置:

Plesk PHP 设置

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

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