V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hxy100  ›  全部回复第 15 页 / 共 18 页
回复总数  343
1 ... 7  8  9  10  11  12  13  14  15  16 ... 18  
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 有没有什么关系。
2021-10-25 10:05:18 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 配置一个任意的已知解析逻辑处理程序即可(强调,这些操作都是 MIME Type 强相关,而不是不相关),php-fpm 算是其中一种,还有其他 cgi 模式的程序也可以作为后端处理,比如,你把 hello.php 写满 Python 代码交给 python.exe 去执行也是 OK 的,或者把图片的二进制代码放到 hello.php 里面,Apache 或 Nginx 设置 MIME 为图片类型输出处理也可以,不过这种情况服务器端要输出一个图片类型的 http Header 来告诉浏览器这是一张图片,浏览器端就能正确渲染。对于不认识或者不知道怎么处理的文件形式( MIME Type ),Apache 和 Nginx 的默认行为都是 Raw 形式直接输出,除非你做了限制和特殊配置。
2021-10-22 17:45:29 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 另外,Apache,Nginx,php-fpm 解析文件时要么根据 MIME (后缀名也算),要么根据路径来判定。无论怎么绕,底层逻辑都离不开 MIME 。
2021-10-22 17:39:42 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
@void1900 和 MIME 当然有关系,你说的这种情况就是没有给该拓展名的文件指定特定的 mime,默认的 mime 类型就是 application/octet-stream,这本质也是一种 MIME,所以 http 访问就当成附件让用户下载下来了。
2021-10-21 19:50:21 +08:00
回复了 croul 创建的主题 PHP 现在做 PHP 的这么少吗?招不到人。
有经验的都转其他语言了,转 Python 和 Go 很多,PHP 招聘搜索结果来看的确实也少了,偶尔遇到个招聘的,都是外包公司,还要求全栈那种,工资又低,没搞头...
2021-10-21 19:31:24 +08:00
回复了 ysy950803 创建的主题 PHP PHP 服务挂了之后是不是就能查看. PHP 文件源码了?
并不会,了解下什么叫 MIME type,只要你 MIME type 配置正确(通常情况下以文件后缀名作为区分),无论服务怎么挂,是不会暴露源码的,除非你把.php 后缀的文件配置成 txt 形式( text/plain )加载,这样无论服务挂不挂都会暴露源码。
在命令前面加一个 start,会打开新窗口执行你的命令进程,原来的命令窗口不受影响,可以手动输入后续命令交互。比如:
start boxie.exe attach ipc:\.\pipe\geth.ipc
echo 你现在可以继续输入命令了...
set /p input=等待输入
---------------
另外 start 还有 /wait 参数,即等待你打开的新窗口进程执行完毕再继续执行下一条命令。
更多参数请在 cmd 中输入 start /? 查看
---------------

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]

"title" 在窗口标题栏中显示的标题。
path 启动目录。
B 启动应用程序,但不创建新窗口。
应用程序已忽略 ^C 处理。除非应用程序
启用 ^C 处理,否则 ^Break 是唯一可以中断
该应用程序的方式。
I 新的环境将是传递
给 cmd.exe 的原始环境,而不是当前环境。
MIN 以最小化方式启动窗口。
MAX 以最大化方式启动窗口。
SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。
SHARED 在共享内存空间中启动 16 位 Windows 程序。
LOW 在 IDLE 优先级类中启动应用程序。
NORMAL 在 NORMAL 优先级类中启动应用程序。
HIGH 在 HIGH 优先级类中启动应用程序。
REALTIME 在 REALTIME 优先级类中启动应用程序。
ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
NODE 将首选非一致性内存结构(NUMA)节点指定为
十进制整数。
AFFINITY 将处理器关联掩码指定为十六进制数字。
进程被限制在这些处理器上运行。

将 /AFFINITY 和 /NODE 结合使用时,会对关联掩码
进行不同的解释。指定关联掩码,以便将零位作为起始位置(就如将 NUMA
节点的处理器掩码向右移位一样)。
进程被限制在指定关联掩码和 NUMA 节点之间的
那些通用处理器上运行。
如果没有通用处理器,则进程被限制在
指定的 NUMA 节点上运行。
WAIT 启动应用程序并等待它终止。
command/program
如果它是内部 cmd 命令或批文件,则
该命令处理器是使用 cmd.exe 的 /K 开关运行的。
这表示运行该命令之后,该窗口
将仍然存在。

如果它不是内部 cmd 命令或批文件,则
它就是一个程序,并将作为一个窗口化应用程序或
控制台应用程序运行。

parameters 这些是传递给 command/program 的参数。

注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。

通过指定 /NODE,可按照利用 NUMA 系统中的内存区域的方式
创建进程。例如,可以创建两个完全
通过共享内存互相通信的进程以共享相同的首选 NUMA 节点,
从而最大限度地减少内存延迟。只要有可能,
它们就会分配来自相同 NUMA 节点的
内存,并且会在指定节点之外的处理器上自由运行。

start /NODE 1 application1.exe
start /NODE 1 application2.exe

这两个进程可被进一步限制在相同 NUMA 节点内的指定处理器
上运行。在以下示例中,application1 在
节点的两个低位处理器上运行,而 application2
在该节点的其后两个处理器上运行。该示例假定指定节点至少具有四个逻辑处理器。请注意,节点号可更改为该计算机的任何有效节点号,
而无需更改关联掩码。

start /NODE 1 /AFFINITY 0x3 application1.exe
启动 /NODE 1 /AFFINITY 0xc application2.exe

如果命令扩展被启用,通过命令行或 START 命令的外部命令
调用会如下改变:

将文件名作为命令键入,非可执行文件可以通过文件关联调用。
(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。
关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和
FTYPE 命令。

执行的应用程序是 32 位 GUI 应用程序时,CMD.EXE 不等应用
程序终止就返回命令提示符。如果在命令脚本内执行,该新行为
则不会发生。

如果执行的命令行的第一个符号是不带扩展名或路径修饰符的
字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这
防止从当前目录提取 CMD.EXE 。

如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用
PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展
名。PATHEXT 变量的默认值是:

.COM;.EXE;.BAT;.CMD

请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。

查找可执行文件时,如果没有相配的扩展名,看一看该名称是否
与目录名相配。如果确实如此,START 会在那个路径上调用
Explorer 。如果从命令行执行,则等同于对那个路径作 CD /D 。
帮忙问一下当初他们的老婆都是在哪找的
@charlie21 你这是在偷换概念,跟白嫖有什么关系(利益相关:我做后端的,不用 Vue ),就事论事,有一说一,就跟签合同类似,既然已经是双方事前就有言在先达成协议,协议双方遵守协议即可,你心里可以不爽,闷着就行,没人管你心里怎么想 ,但是你无权指责。这才是协议的意义所在。生活中很多例子也是同样的道理,一个平时人缘和品德很差的人,要是买了假货,你是不是就要剥夺他退换货的权利呢?因为他是“坏人”,大家不喜欢他,所以这个权利咱不给他,直接剥夺了,合适吗?再举一个例子,一个十恶不赦的连环杀人犯被审判,死刑妥妥的,你是不是还要剥夺他请辩护律师的权利呢,因为你认为他太坏了,因为他不配?那法律的意义何在?大家干脆取缔法院,集合起来投票,凭感情办事算了,道理什么的都不用讲了。
1 ... 7  8  9  10  11  12  13  14  15  16 ... 18  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 06:35 · PVG 14:35 · LAX 22:35 · JFK 01:35
Developed with CodeLauncher
♥ Do have faith in what you're doing.