自定义PHP文件不会加载(在magento 2安装ubuntu + nginx之外)

时间:2019-03-04 09:00:50

标签: ubuntu magento nginx magento2

我试图让自定义脚本位于Magento 2安装的根目录中,但是当我在浏览器中导航至该脚本时,它返回404错误。为了进行测试,我尝试创建一个空的php文件(abc.php),然后在浏览器(domain / abc.php)中导航至该文件,即使我确定该文件已存在于该位置,它仍会返回404。我尝试将CHMODding更改为777,并将文件的所有权更改为与目录的其余部分相同,但仍然得到此404。

我正在使用ubuntu 18.04 + NGINX作为运行Magento 2的Web服务器。Magento 2的安装正在浏览器上运行,只是我导航到的任何自定义脚本都返回了404。下一步该如何调试此问题:/?

2 个答案:

答案 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