在尝试复制 Apple Airscan 协议时,我在 POSTed 文件上传时收到此错误。这是从 Mopria Android 客户端到 Apache 服务器的,因此我无法在客户端更改任何内容。
192.168.0.8 - - [16/May/2019:02:11:19 -0500] "POST /eSCL/ScanJobs
HTTP/1.1" 404 506 "-" "okhttp/3.9.1"
我甚至将 /eSCL/ScanJobs 的权限设置为 777
404 未找到 506 指的是空格
服务器版本:Apache/2.4.18(Ubuntu)
到目前为止,我已经为此受尽了折磨,现在离解决这样的小问题已经很近了,但仍然遥不可及
需要在 apache2.conf 中更改某些内容以允许上传,还是更改权限就足够了?到目前为止,我还没有构建任何内容来处理文件,但我认为它应该发布
以下是附加信息:原始帖子之后------------------------
感谢您确认这是来自日志文件。
服务器根目录是 /var/www/html 错误指的是 /var/www/html/eSCL/SanJobs,它是一个有效目录,拥有 www-data 的所有权(适用于 Ubuntu Linux)并具有 777 权限。
我没有发现任何配置错误,因为主 index.php 位于 /var/www/html 并且加载正确
这几乎是 ubuntu linux 上的默认安装,安装在本地主机上。
该 POST 来自 Mopria Android 客户端
我已将以下内容添加到 Apache2.conf 中,以处理没有尾部斜杠且没有重定向的情况
<Directory /var/www/>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]
RewriteCond %{REQUEST_FILENAME}.xml -f
RewriteRule (.*) $1.xml [L]
</IfModule>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
还有一个 .htaccess 文件,内容如下:
DirectorySlash Off
#RewriteOptions AllowNoSlash
这让我不禁想问,我必须做什么才能解析 POST 请求?我的意思是我知道我稍后会使用 PHP 来解析它,但我想在继续之前获取文件。该文件仍应以 POST 形式发送而无需任何处理,对吗?
答案1
192.168.0.8 - - [16/May/2019:02:11:19 -0500] "POST /eSCL/ScanJobs HTTP/1.1" 404 506 "-" "okhttp/3.9.1"
这是扩展日志格式的日志行http://httpd.apache.org/docs/current/mod/mod_log_config.html
该日志条目中的 404 确实是“文件未找到”错误响应。
这意味着,相对于 DocumentRoot您在 Apache 中配置时,/eSCL/ScanJobs
找不到该文件。通常,DocumentRoot 类似于/var/www/html
,请求的文件映射到/var/www/html/eSCL/ScanJobs
。
指506
的是 apache 响应请求发送的字节数(一段文字说明“错误 404: 文件未找到”大概)。
需要在 apache2.conf 中更改一些内容以允许上传,还是更改权限就足够了?
HTTP Post 请求无法通过静态内容进行解析,需要脚本或可执行文件来处理它们。由于ScanJobs
没有文件扩展名,Apache 无法知道该文件是 PHP 脚本、Perl 脚本、可执行文件还是其他文件。您需要相应地配置 Apache。