国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

站點(diǎn)部署成功后,瀏覽器訪問文件自動(dòng)變成下載源碼BUG?

z

問題描述

使用寶塔nginx+php8.1 添加域名如aa.com,設(shè)置php版本為純靜態(tài),運(yùn)行start后一切都正常,
當(dāng)在根目錄(start.php同級(jí))添加一個(gè)a.php文件后,瀏覽器訪問aa.com/a.php 會(huì)變下載a.php的源碼,
甚至訪問start.php文件都會(huì)直接下載源碼,
訪問aa.com/.env 也會(huì)直接吧.env下載下來,
如何設(shè)置不讓下載??而是訪問403呢?
設(shè)置網(wǎng)站根目錄到/public后也是一樣,能訪問public中的php文件直接下載,和程序根目錄的start.php中的文件

去掉下面代理nginx的配置后,訪問/public目錄下文件,正常執(zhí)行單個(gè)php文件

NG配置

location ^~ / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        #proxy_buffering off;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        if (!-f $request_filename){
            proxy_pass http://127.0.0.1:16661;
        }
    }

config/static.php

return [
    'enable' => true,
    'middleware' => [     // Static file Middleware
        app\middleware\StaticFile::class,
    ],
];

config/middleware.php

return [
    '' => [
        app\middleware\StaticFile::class,
    ]
];

app\middleware\StaticFile.php

<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.wtbis.cn/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

namespace app\middleware;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

/**
 * Class StaticFile
 * @package app\middleware
 */
class StaticFile implements MiddlewareInterface
{
    public function process(Request $request, callable $next): Response
    {
        // Access to files beginning with. Is prohibited
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // Add cross domain HTTP header
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

config/app.php

<?php

use support\Request;

return [
    'debug' => getenv('DEBUG')?:false,
    'error_reporting' => E_ALL,
    'default_timezone' => 'Asia/Shanghai',
    'request_class' => Request::class,
    'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public',
    'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime',
    'controller_suffix' => 'Controller',
    'controller_reuse' => false,
];
1470 4 0
4個(gè)回答

SillyDog

workerman 項(xiàng)目 部署 不需要指定目錄 指定代理地址即可
文檔:
http://www.wtbis.cn/doc/webman/others/nginx-proxy.html

  • SillyDog 2024-02-21

    看看文檔吧 哥哥

  • z 2024-02-21

    根據(jù)這個(gè)設(shè)置了,才發(fā)現(xiàn)的這個(gè)問題

  • SillyDog 2024-02-21

    ng 配置加個(gè)這玩意兒 用來過濾php 文件 下載的問題

    
        location ~ \.php(.*)$ {
            return 403 "<h1>403 forbidden</h1>";
        }
  • SillyDog 2024-02-21

    也可以使用

        location ~ \.php(.*)$ {
            deny  all;
        }
  • z 2024-02-21

    這樣設(shè)置根目錄訪問403生效了,

  • SillyDog 2024-02-21

    請(qǐng)求地址是什么 正常訪問應(yīng)該不會(huì)直接訪問php文件吧

  • SillyDog 2024-02-21

    原生+ workerman 混合嘛 ? 如果是這樣的話 需要對(duì)目錄內(nèi)的php 文件做權(quán)限規(guī)劃

  • z 2024-02-21

    根目錄訪問不到了, 但是設(shè)置運(yùn)行目錄public后 域名/a.php 還是會(huì)直接下載, 這個(gè)不要緊不放文件到這個(gè)目錄就好。單獨(dú)寫一些php腳本放cli里處理數(shù)據(jù)用的

  • SillyDog 2024-02-21

    完整配置發(fā)一下吧 感覺有幺蛾子

  • z 2024-02-21

    location ^~ / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;

    proxy_buffering off;

        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        if (!-f $request_filename){
            proxy_pass http://127.0.0.1:16661;
        }
    } 其他ng都是默認(rèn)的
keytehu

1、nginx設(shè)置的根目錄必須是public
2、至于訪問.php文件就下載,這個(gè)和webman沒關(guān)系,是nginx直接將php文件發(fā)給了瀏覽器,請(qǐng)求還沒到webman那邊。

我記得webman默認(rèn)不支持.php文件的訪問,為什么你要把.php文件放到public下?

  • z 2024-02-21

    設(shè)置public了,也是一樣的,訪問start.php也是可以訪問到直接下載了,當(dāng)去掉nginx的代理設(shè)置,php文件就可以正常執(zhí)行,當(dāng)運(yùn)行的就不是webman的程序了

  • z 2024-02-21

    是的,webman默認(rèn)不支持.php文件的訪問,我也不需要訪問,我放到程序根目錄的,發(fā)現(xiàn)也能被訪問到,訪問的形式就是直接把php文件下載下來了,然后才設(shè)置到public,結(jié)果也一樣

TM

public 下面一般都是靜態(tài)文件,ng當(dāng)成靜態(tài)下載了吧

  • z 2024-02-21

    public根目錄的上級(jí)目錄, 也就是start.php同級(jí),這個(gè)程序的根目錄,設(shè)置了public根目錄,還是能訪問,域名/start.php,也直接把start.php下載了,根目錄下面的文件訪問(txt,圖片等不會(huì))其他都會(huì)直接下載

  • TM 2024-02-21

    錒!意思是跨過設(shè)置的根目錄直接訪問外面的文件嗎

  • TM 2024-02-21

    這樣的話應(yīng)該是ng的配置問題了

  • z 2024-02-21

    嗯, 寶塔面板里設(shè)置了運(yùn)行目錄/public,我傳了一個(gè)/public/a.php文件, 訪問域名/a.php 直接下載了,訪問根目錄域名/start.php也下載了,去掉NG的配置后,訪問域名/a.php正常了,但是不能訪問webman的程序了

  • TM 2024-02-21

    我也用的是寶塔,正常使用,你刪除站點(diǎn)新建一個(gè)看看

  • z 2024-02-21

    也是一樣,php start.php start 后訪問就直接下載了

yuyu

我懷疑寶塔配置的問題??!

  • z 2024-02-21

    可能是 不是運(yùn)行的fpm環(huán)境, 去掉webman的代理直接運(yùn)行又正常

年代過于久遠(yuǎn),無法發(fā)表回答
??