我需要部署一个基于Symfony的API应用程序在Windows服务器上使用IIS。我通常与Nginx服务器一起工作,但我需要与NetFramework dll一起工作,在一台装有ASP.NET应用程序的机器上。
我已经成功地在Windows服务器上安装了PHP,phpinfo()可以正常工作,而且我已经上传了Symfony的所有代码(已经在Symfony本地Web服务器上测试过了),但是,当我试图访问项目的主页(默认的Symfony页面)时,我得到了这个错误:Notice: fwrite(): write of 163 bytes failed with errno=9 Bad file descriptor
我发现异常来自vendor\symfony\http-kernel\Log\Logger.php
的第82行:fwrite($this->handle, $formatter($level, $message, $context));
经过调试,发现Symfony正在尝试写入php://stderr
数据流,所以我认为我有权限问题,我尝试写入不同的文件夹,授予IIS用户对这些文件夹的写入权限,并将PHP和IIS服务器的错误日志配置移到这些文件夹中。
此外,我只能访问主页(一个我获得500错误),在任何其他路线,我获得404错误。
最后一点注意,当使用Postman向Symfony应用程序发出GET请求时,我获得了Symfony响应(仅在主页中,在其他页面中我获得了IIS服务器页面错误)
2条答案
按热度按时间kuhbmx9i1#
将
<your project>/config/packages/dev/monolog.yaml
文件中的path: php://stderr
行更改为path: "%kernel.logs_dir%/%kernel.environment%.log"
。gjmwrych2#
终于成功了!
我自己回答,以防有人有同样的问题。
这似乎是一个bug of PHP 7.4,我已经尝试与php7.3和工作一样的魅力