这是我的vhost文件:
<VirtualHost *:80>
ServerName awesome.dev
## Vhost docroot
DocumentRoot "/var/www/awesome"
## Directories, there should at least be a declaration for /var/www/awesome
<Directory "/var/www/awesome">
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/apache2/w0JhArMoDehc_error.log"
ServerSignature Off
CustomLog "/var/log/apache2/w0JhArMoDehc_access.log" combined
## Server aliases
ServerAlias www.awesome.dev
## SetEnv/SetEnvIf for environment variables
SetEnv APP_ENV dev
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/awesome/$1
</VirtualHost>
我正在尝试捕获对不存在*的所有请求。php文件。
例如,如果/var/www/awesome/index。php
存在,我转到http://foo.com/index.php我得到了正确的回答,但是如果/var/www/awesome/foo。php
不存在,我转到http://foo.com/foo.php,我只是得到一个文件未找到的响应
。
。未读取htaccess
文件,因为Apache将所有内容都交给了PHP-FPM。
我需要抓住所有404请求并显示一个常见的错误页面,就像你通常在任何网站上看到的那样。
然而,由于Apache将所有事情都交给了php fpm,因此它似乎没有正确地处理这些错误。
对于今天阅读的人来说,这里是正确的答案,感谢蒂托1337的回答。
ProxyErrorOverride
如果在代码的其他地方设置404或处理某些错误,可能会给您带来问题或中断应用程序,而且实现起来更复杂。
相反,只有当文件存在时,您才应该将请求传递给php-fpm。如果该文件不存在,Apache将直接指向您定义的ErrorDocum
。您可以在Apache配置中的PHP处理程序周围添加此检查。
CentOS 8的示例:
#
# Redirect to local php-fpm (no mod_php in default configuration)
#
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
# NEW ADDITION - CHECK IF FILE EXISTS FIRST
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</If>
</FilesMatch>
</IfModule>
</IfModule>
由于apache/php fpm过程中可能会出现许多问题,因此许多错误都可能导致响应
“找不到文件”和日志“AH01071:出现错误'Primary script unknown\n'”(路径、权限中的双斜杠…)
要跟踪它们,您可以:
Ps:注意另一个线程,人们说使用ProxyErrorOverride来实现这一点“真是个坏主意”:服务器故障| Apache 2.4 PHP-FPM ProxyPassMatch
我以前也有同样的问题,最后我把它修好了。
尝试在ProxyPassMatch设置之后添加此选项:
ProxyErrorOverride on
顺便说一句,不要忘记你的
ErrorDocument 404 /path/to/file
设置。
我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信
我有一个应用程序使用了log4j1.2.17,现在我想把它更改为log4j2。所以我更改了pom.xml(我确信我已经删除了任何依赖项中的log4j1),添加了log4j2.xml。log4j2工作得很好,它记录了我想要的信息。 我查看log4j的问题。LOG4J2-2026似乎可以解决这个问题,但是我使用的log4j2版本已经是2.9.1了。我不知道是什么原因造成这个错误。
我现在必须学习通过fire base编写移动应用程序web服务。我点击了这个链接:https://firebase-php.readthedocs.io/en/stable/ 在我的核心网站中,我创建web服务文件夹,然后创建我的fire。php文件。这个文件代码在这里, 我得打电话给我的支持档案:https://github.com/kreait/firebase-php/ 但我还是得到了一个:
问题内容: 基本上,我必须创建一个JavaScript APP对象,该对象将对服务器的一系列异步请求进行排队,处理对JSON的响应,并记录其中的错误。 JSON处理错误很容易通过“ try-catch”捕获,但是服务器错误(如404、500等)仍显示在浏览器的控制台中,而我需要将其静默记录在“ APP.history”中。 我尝试通过下面的代码实现它,但是404错误均未触发一个错误。我究竟做错了什
本文向大家介绍浅谈PowerShell 捕获错误,包括了浅谈PowerShell 捕获错误的使用技巧和注意事项,需要的朋友参考一下 之前的文章我们演示了如何使用 Windows PowerShell 构建相当高级的清单工具。我创建的工具提供了多个有关输出的选项,这应归功于外壳的内置功能和将函数应用于对象。 我所创建的函数有一个无可否认的弱点:它不能适度处理可能发生的任何错误(例如连接或权限问题)。
我正在使用以下代码向Laravel发布一些内容: (不相关代码省略) 当Laravel返回200时,这总体上是有效的。如果我从Laravel Axios返回401、422或其他东西,会在控制台中抛出一个错误,整个方法将停止运行。 我一直认为这是一种非常不利于开发人员的行为——我不明白吗?从后端API返回不同的状态代码应该有助于读取Vue中的响应,但Vue/Axios将每个非200响应视为致命错误。