V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hxy100  ›  全部回复第 14 页 / 共 17 页
回复总数  331
1 ... 6  7  8  9  10  11  12  13  14  15 ... 17  
2021-10-27 15:11:27 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 语文不好的是你,理解能力差,所以一开始才看不懂别人的回复里面已经约定了很多东西,你视而不见,需要一遍又一遍跟你解释,我说了不急,只要 V2 这站还活着,让时间给你答案。
2021-10-27 15:06:26 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@miencun CGI 你也得用相应的规则配置去匹配.php 这一类后缀的文件,这还叫没关系。虽然 MIME Type 不全等于文件拓展名(这一点我上面的回复说了,就算我强行关联吧),但 MIME Type 就是为了让 HTTP 服务 C/S 两端前后呼应,用来区分不同文件类型的,想想你用 Niginx 配置代理 PHP 时候怎么写的 location 来匹配呢,用了 php 的拓展名没有?
2021-10-27 14:59:02 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
忘记艾特你了,请看上一楼,专门回复你的。 @void1900
2021-10-27 14:58:13 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
你是不是傻,来,我来一一回复你:

“人家结尾都说了 “并没有在内部 mime 列表中查出一个['php'=>'type/php']这种东西。”。”

——请把我这个帖子的回复连贯起来看,我上面的回复里面说了,并不是要明示“'php'=>'type/php'”这样的东西才叫 php 有 MIME Type ,没定义不代表就没有,MIME Type 是 HTTP 类应用在区分不同文件类型的时候引入的概念,但不是说这类东西只能跟浏览器挂钩,Web 服务也是需要的,比如 Apache 里面是定义了 PHP 的 MIME Type 类型是 application/x-httpd-php ,你可以不加这个名字,叫 application/x-abc 也行,总之是为了区分不同类型的文件; Nginx 默认只定义了所有常见的静态资源类型的 MIME Type ,没去定义任何的动态类语言的 MIME Type ( php ,jsp 等等),是因为 Nginx 常用做前端负载均衡代理服务使用,你要给他一个 PHP 的 MIME 定义,他也没错,Nginx 对不同的文件类型,也同样有自己 MIME Type 概念,其实严格一点说,所有具有后缀名的文件都有 MIME Type ,只要我们需要了,我们就可以给这一类文件定义一个 MIME Type ,Web Server 靠这个东西区分不同的文件类型该做什么样处理。你的问题在于陷入了一个误区,认为只有浏览器的 Content-Type 跟 MIME Type 有关系,其他的地方都没关系。

---

“写正则用的是扩展名,那假如我将整个目录都 proxy_pass 给 fpm 呢?你还怎么扯你的扩展名?”

——你当然可以这样设置,但你这是正常和常规的做法吗?万一你这个路径下边有子目录呢,子目录里面有图片,js
,css 文件呢,你是不是要不管三七二十一统统交给后端去解析,还是说你把所有的子目录一个个分开来设置,不管嵌套几层,统统分开设置,反正就是打死不用后缀名来匹配。顺便建议你,平时在服务器上配置 Nginx 和 PHP 也采用你说的做法,打死不要用 php 后缀名来做正则匹配哦,我会为你鼓掌,你要偷偷用了你就是小狗。
2021-10-27 14:26:31 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 还有指明一点,别人的回答你都不仔细看,甚至没弄明白别人说的是什么就率先站出来反对,你看看我在这个帖子下的所有的回复,哪一个兄弟的回复的答案我没看?并且是有人给出自己观点,我都会对照自己的表述一一回应,错了就错了,概念错误,还是逻辑错误,又或者是意思没表达清楚,我都大方承认,就你光在这自说自话,压根不管别人说的是啥,这是一个学习者该有的态度吗?
-----
顺便说一句,V2 发帖的好处是无法删帖无法修改,究竟打了谁的脸,就留给观众老爷们评判吧,让时间说话。
2021-10-27 14:07:14 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 你就继续掩耳盗铃吧。你再好好读读楼上那位兄弟的回答,假如你能理解的话。要是读不懂,那我就送你三个字:“你赢了!”,散会
2021-10-27 12:15:07 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@liuxu 另外说一下,关于第二个问题,Nginx 使用 location 配置 php 时,实际上已经在正则表达式里边传递 php 的后缀名了,所以说成是后缀名匹配也无大的错误。
2021-10-27 11:37:49 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@liuxu 你的这个回答恰恰说明了 php 会不会暴露源码跟 MIME Type 高度相关,而不是不相关,打了不少人的脸,@void1900 首当其冲,脸都被打肿了。先不讨论你回答的正确性(因为我懒得验证),根据你的回答,我阐述有问题的地方仅有两个:
一. 不是所有的 Web 服务器默认 MIME Type 都是 application/octet-stream ;
二。不能把 Nginx 通过 location 配置 PHP 解析的方式统一叫成后缀名或 MIME Type 识别,它可能仅仅就是一个 URL 路径的正则匹配。

----
当然,现在的我仍然坚持后缀名≈MIME Type 的观点,我不是说他们概念和定义相等,是说他们对 Web 服务器的影响差不多,前后端搭配,不仅是浏览器需要 Content-Type ,Web 服务器本身也需要区分哪些文件需要处理,哪些文件是直接输出。

你说的“但是从 nginx 的角度来看,它就是一个正则字符串,并没有在内部 mime 列表中查出一个['php'=>'type/php']这种东西。”这个问题我上面的回复说过了,不需要输出给浏览器特殊标头( Content-Type )的文件,并不需要显式定义,因为不管是 php ,还是 jsp 他们最终呈现给浏览器都是 text/html 而已,但不意味着在 Web 服务器内部没有一个标识来把这些 php 文件统一归类,有可能这个东西不能叫 MIME Type (你可以叫 proxy file group1 ,proxy file group2 或其他),但绝对存在这样一个标识,Nginx 这样的代理服务器也不例外。

综上,结论就是 PHP 爆不爆源码还真的跟 MIME Type 有关系。别吵了。
2021-10-26 19:48:32 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 很好,结贴
2021-10-26 19:22:06 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 我说的有什么问题,我说的“配置正确”范围很宽泛,不管你配置转发到后端也好,或者配置权限控制也好(密码访问,IP 限制等),哪怕是 Nginx 你这么写 location ~ *.php {deny alll;},我都都算配置正确。我说的“配置正确”意思就是叫你对这类文件的预期行为进行设置,如果你设置有误,设置成纯文本模式读取的形式( text/plain,text/css 等),或者没设置设置成未知的类型,那 MIME Type 默认就是 application/octet-stream ,这样 http 访问就会被当成一个附件下载下来了,不管 HTTP header 输不输出这个 Content-type 头,只要 Web 服务器认为这个文件不需要被处理,需要输出原始流,都会导致源码暴露。你才是硬杠,我提这个的东西最初衷的目的就是让题主去了解服务器分文件类型解析和输出结果的过程,然后题主就不会有这样的疑问了,因为 php 这个文件类型已经被约定行为了。你可以说 PHP 文件在 Web 服务器内部不能叫 MIME Type ,我叫错了,但你无法证明我的思路和阐述是错误的,就这样子。
2021-10-26 18:10:03 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 我不回复你了,只有楼上这位仁兄 @ysc3839 认真看了我的答案,你的话就只顾自说自话,我不知道你是从来不看别人这么说,还是我答得太长了,你有点晕看不懂,你不会正视自己的问题,就只想证明别人是错的,你再从头把我的每一个回复看一遍,我什么时候说过只要 inlcude mime.types 和 AddType 就行了,就能正确解析了,这完全是你自己说的,我说的是所有 PHP 文件默认是一个 Type ,你给找个 Type 指定合适的规则,就完全不用担心爆不爆源码的文件。爆不爆源码与后端服务的死活无关,只与 Web 服务器本身有关,Web 服务器就是靠这个 Type 来区分文件的,这个 Type 可以是.php ,也可以是.abc ,web 服务器认得就是这个 Type ,你可以把 .php .123 .abc 这三个后缀的文件合并成一组交给后端解析,组名也就是这个 Type ,我之前叫这个叫 MIME Type 可能有误,直接就叫文件类型标识好了。
2021-10-26 17:41:39 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@ysc3839 你的这个说法我认同,而且我知道你这个回答是看了我帖子的其他回复给出的答案,我确实是做了强关联,我接受,这是我的狭隘之处,我也知道,后缀名!=文件类型!=MIME type (我上面的其中一个回复里面举例时也提到了这一点),但绝大多数时候,我们如果没有特殊需求,往往就是采用开宗明义的做法,以后缀名区分文件类型,然后再以不同的文件类型作为标识输出给浏览器 [MIME Type] ,这种情况下,后缀名间接对应 MIME Type ,PHP 同样也有,大概总结就是 Web 服务把不同后缀的文件类型区分,该读取的读取,该由第三方解析的解析,然后统一回复客户端,不仅仅是静态资源文件有,有的 Web Server 会明示某种动态脚本后缀的文件为某个 MIME Type (比如 Apache 定义 PHP 为 application/x-httpd-php ),有的 Web Server 不明示,但不代表内部的这种 Type 区分不存在。我上面要强调的是仅仅是不同文件类型的区分,在任何一个流行的 Web Server ( Nginx ,Apache ,IIS ,LightHttpd 等等)都是存在的,不管你看不看得见。配置 PHP 时正确配置这个 Type ,不管后端接盘的 php-fpm 还是其他的何方神圣,都不会暴露源码。

-----

综上,我认为我的表述过于狭隘,或者说不应该把服务端的这种区别文件类型的做法叫 MIME Type ,MIME Type 严格的描述应该是 xxx/xxxxx 这样的形式,至于其余的逻辑没问题,我理解 Web Server 是怎么处理各种文件的。你的这条回答很中肯。我也虚心接受,不像 @void1900 一顿乱杠,自己的逻辑里面很多东西都是错的。
2021-10-26 15:40:37 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 我当然知道 MIME Type 的全程是啥,你可以不叫它 MIME Type ,你可以不用这个名称,直接就叫“文件类型”即可,但是和 MIME Type 就是一个意思,服务器端都要靠文件类型来区别对待不同的文件。如果你非要狭义认为只有静态资源才配有 MIME Type ,或者 MIME Type 一定要用在浏览器上才叫 MIME Type ,那好,你赢了,我认输。可能你真的认定叫一个人的名字是专人专用,小名和大名也不能混,二狗和王二狗不是同一个人吧。你赢了,你是对的,我不用 MIME Type 这个名字了,让给你,暂且叫它 V2EX Type 吧!
2021-10-26 15:04:33 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900

“mime 就只是一个文件类型标识,不是你所谓的后端解析”
——是你语文不行,我的意思就是,MIME Type 用以 Web Server 识别同一类文件,Web 服务就是把这写不同 Type 的文件区分来用不种方式处理的,该输出还是该后端解析,后缀名属于确认 MIME Type 的一种极其常见方式。

“我说的是和 php 文件的处理没有关系,不是和 web server 没有关系,年轻人语文也不行,唉。”
——题主的疑问爆不爆源码跟 php 本身没关系,跟 WebServer 配置有关系。

“还管你转不转发,还权威内容,nginx php 需要配置 mime types ?不配 mime types 一样能处理。”
——Nginx 本身内置了 mime type ,但是默认定义的都是用于处理静态文件,但你配置 proxy_pass 是通常要指定的 location ~ *.php {...},你只要用了后缀名做区分,本质上也是用了 MIME Type ,别以为后缀名就不是 MIME Type 了

“apache 配置 php 方法有几种,说直白点就是 apache 把你误导了,懂了吧,你自己再学习学习吧。”
——不管几种,而且不管哪一种,内部逻辑都需要 MIME Type 把不同的文件区分归类,然后做不同的处理

“apache 你单单配置 addtype 有用?”
——这是你说的,我没说
2021-10-26 14:09:01 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@ysc3839 你没完整看完我的回答,另外你也不懂,后缀名也是识别 MIME Type 的方式之一,谁说后缀名跟 MIME Type 没关系的,计算机判断一个文件是什么文件,通常有两种方式,其一是通过后缀名粗暴判断(绝大多数的情况),其二是根据一些常见的已知的文件类型的二进制数据流头几个字节来判断(专业术语叫:File Magic Number )。
2021-10-26 01:28:19 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 你不要避重就轻,管你转发不转发,Web 服务器就是靠 MIME Type 来识别要后端解析 Code 还是输出文件的 RAW 数据。比如人类普遍凭 X 器官区分性别一样,这是不争的事实,就题主的问题而言,靠 MIME Type 识别这个究竟是 PHP 文件需要解析,还是你这位 V 站 void1900 大神直接输出,题主问题在于就是不懂这个东西,所以才来提的问题。我只是一针见血指出题主的疑惑所在,至于你扯的这些东西,浮于表面,扯了一堆有的没的,还是没说到问题根本,如果你一口咬定所谓的转发跟 MIME Type 没关系。MIME Type 跟 Web Server 没关系,建议去 Google 和 Stackoverflow 搜索相关权威内容。
我随便贴几个链接:
https://stackoverflow.com/questions/20668886/nginx-and-fastcgi-downloads-php-files-instead-of-processing-them
https://serverfault.com/questions/315224/why-are-the-php-files-downloaded-instead-of-processed-by-nginx
https://stackoverflow.com/questions/20093069/set-mime-type-after-php-interpreting
希望你不要对既定事实视而不见,不服的话请去怼老外。
https://i.imgur.com/V4yQOdQ.png
这是我最后一次回复,跟掩耳盗铃的人较真真的很累。
2021-10-25 21:05:39 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 另外你说的浏览器标头里面的 Content-Type ,也是 Web 服务器告诉浏览器的,不是浏览器自己去探测的,那么 Web 服务器是怎么判断什么时候该输出 jpg 图片标头,什么时候该输出 png 标头,什么时候又该输出 html ,js 标头的呢,你考虑过这个问题没有?还有 Apache 配置文件 httpd.conf 里边一堆 AddType AddHandler 是干嘛使的呢,是不是作者脑袋抽抽了胡乱加的,“说白了他是 HTTP 协议的一部分,和你解析服务器文件没多少关系。”这是你的原话,你再好好推敲一下。
https://imgur.com/LIdAUhd
2021-10-25 20:47:17 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 我就问你,你平时是怎么配的 PHP ,不管是 Apache ,Nginx 还是其他的 Web 服务器,通常做法是不是把所有.php 的后缀的文件交给某个后端( etc:Nginx & php-fpm )或者某个模块处理( etc:Apache Load PHP Module ),这个过程,本身就是区别对待不同文件 MIME Type 的过程(绝大多数情况下后缀名识别是约定速成的形式,你也可以配置成不使用常规的后缀名)。回到题主本身的问题来,题主问 PHP 应用如果后端服务服务挂了,源码会不会暴露出来,我回答正确配置 MIME Type 就行,不会出现题主担心的问题。这个回答并没有毛病,你配置后端解析的时候,就是把这个 MiME Type 的文件指定一个程序去解析,张三是一个 MIME Type ,你指定张三去 3 号窗口领盒饭,它找不到 3 号窗口就会僵在那,不会发生意外之外的情况跑去 4,5 号窗口,你叫李四挂个牌子叫他张三也可以,也是一样的道理,挂牌子的过程,本身就是指定 MIME Type ,你指定的 MIME Type 解析过程如果配置有误,或者没指定,那么不管后端 php-fpm 挂不挂,题主都会发现问题。然后就会去找原因解决问题,然后就不会有如此疑问了。题主之所以有此问题,原因在于不理解服务器端是怎么识别不同类型的文件的处理逻辑,所以,回答这个问题,MIME Type 是核心,你所说的配置 php-fpm 后端解析巴拉巴拉都对,但也都是围绕 MIME Type 来的, 这个问题归根结底,在于理解 MIME Type 对于 Web 服务器的作用。苦口婆心说了这么多,希望你能听进去。
2021-10-25 10:34:08 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 一句话总结,MIME type 中文名叫,“文件类型,文件扩展”;并不是只有浏览器上你看到的 Content-type 才叫 MIME type ,服务端也有 MIME type 的概念,如果你不知道这个,或者不知道服务器的 Nginx/Apache 软件配置跟 MIME type 有关系,那你该补补课了,基础不扎实。
2021-10-25 10:12:53 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 你甚至还可以自己修改 Apache 或者 Nginx 的源码,做一个特殊的服务器 daemon ,对于未知的 MiME Type 的类型,服务端不做任何处理,对于已知的类型,才做相对应的解析。如果你还是不能理解,你去温习一下看看 Windows 下 IIS 配置 PHP 解析又是怎么做的,逻辑上是不是根据 MIME Type 来的,看看 GUI 界面上的那几个大字跟 MIME Type 有没有什么关系。
1 ... 6  7  8  9  10  11  12  13  14  15 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3759 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 05:18 · PVG 13:18 · LAX 22:18 · JFK 01:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.