我试图让自定义脚本位于Magento 2安装的根目录中,但是当我在浏览器中导航至该脚本时,它返回404错误。为了进行测试,我尝试创建一个空的php文件(abc.php),然后在浏览器(domain / abc.php)中导航至该文件,即使我确定该文件已存在于该位置,它仍会返回404。我尝试将CHMODding更改为777,并将文件的所有权更改为与目录的其余部分相同,但仍然得到此404。
我正在使用ubuntu 18.04 + NGINX作为运行Magento 2的Web服务器。Magento 2的安装正在浏览器上运行,只是我导航到的任何自定义脚本都返回了404。下一步该如何调试此问题:/?
答案 0 :(得分:1)
如果您已按照Magento 2的建议设置了NGINX,则它将仅允许从定义明确的已知PHP文件的列表中执行PHP。也就是说,如果您look here,则会注意到:
location ~ ^/(index|get|static|errors/report|errors/404|errors/503|health_check)\.php$ {
...
fastcgi_pass fastcgi_backend;
...
}
还有this:
location ~* (\.php$|\.htaccess$|\.git) {
deny all;
}
从本质上讲,这意味着拒绝对/index.php
,/get.php
等以外的任何PHP文件执行。
因此,要允许执行自定义PHP文件,您需要在第一个位置调整REGEX,以包含自定义文件的名称,例如:
location ~ ^/(index|get|static|errors/report|errors/404|errors/503|health_check|test)\.php$ {
除了其他已知的PHP入口点之外,上述内容还允许执行/test.php
。
此外,如果您的Magento网站在NGINX配置中的根目录是/path/to/pub
(同样,按照建议),那么您需要将自定义文件放置在该pub
子目录中,而不是在目录的实际根目录中Magento。
答案 1 :(得分:0)
如果在域内,请尝试以下操作:-
localhost/domailname/filename.php
如果文件不在域中,请尝试此操作
localhost/filename.php