在IIS服务器上部署symfony的文件描述符不正确



我需要在使用IIS的Windows Server上部署基于Symfony的API应用程序。我通常使用Nginx服务器,但我需要在带有ASP.NET应用程序的机器中使用netFramework dll。

我已经成功地在windows服务器上安装了PHP,phpinfo((可以正常工作。此外,我已经上传了Symfony的所有代码(已经使用Symfony本地Web服务器进行了测试(。但是,当我试图访问项目的主页(默认的Symfony页面(时,我得到了这个错误:

Notice: fwrite(): write of 163 bytes failed with errno=9 Bad file descriptor

我发现异常来自vendorsymfonyhttp-kernelLogLogger.php82号线上:

fwrite($this->handle, $formatter($level, $message, $context));

调试后,我发现Symfony正试图写入php://stderr数据流,所以我认为我有权限问题。我试着写一些无关紧要的文件夹,授予IIS用户对这些文件夹的写入权限,并将PHP和IIS服务器的错误日志配置移到它们身上。

此外,我只能访问主页(我获得500错误的主页(,在任何其他途径中,我获得404错误。

最后一点注意,当使用Postman向Symfony应用程序发出GET请求时,我会获得Symfony响应(仅在主页中,在其他页面中我会获得IIS服务器页面错误(

将文件<your project>/config/packages/dev/monolog.yaml中的行path: php://stderr更改为path: "%kernel.logs_dir%/%kernel.environment%.log"。享受

终于成功了!

我自己回答,以防有人有同样的问题。

这似乎是PHP 7.4的一个bug,我尝试过PHP 7.3,它的工作原理就像一个迷人的

最新更新