samba 配置

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run ‘testparm’ to verify the config is correct after
# you modified it.

[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
map to guest = bad user
guest account = nobody
guest ok = yes
writable = yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes

[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
[share]
comment = linux share
path = /home/wwwroot
browseable = yes
public = yes
writable = no
guest ok = yes

PHP代码的执行流程

执行流程图

1

1、用户代码输入给PHP内核执行,PHP内核对PHP代码进行词法分析和语法分析

2、词法分析:把PHP代码分割成一个个的“单元”(token)

3、语法分析:将这些单元转化为Zend Engine可执行的操作

4、Zend Engine对这些操作进行顺次的执行。Zend Engine是PHP内核的核心部分,负责最终操作的执行和结果的返回

 

明日计划:深入底层

PHP7源码目录结构

 

 

QQ截图20170612110201

 

目录结构介绍

TSRM:更多(http://www.laruence.com/2008/08/03/201.html 揭秘TSRM(Introspecting TSRM) )


 

如果你曾经做过PHP的扩展,或者研究过PHP的源码,你就会看到这个东西到处都在。但是关于这个东西是什么,却鲜有资料叙及。

对于这个东西是什么,最常见的回答就是“你不用关心这个是什么,你只要在‘这里’‘那里’用上就是了,如果编译器告诉你缺少tsrm_ls,加上就好了 ”。这个答案虽然是一种很敷衍的回答,但其实也是有一定道理的,因为Zend Engine把这个宏搞的太复杂,并且对于一个初学PHP扩展的开发者来说,了解它是什么也没有太大的益处。
而我是一个喜欢追根究底的人。所以,如果你现在刚好比较闲,并有耐性了解这个东西是什么,那么就请继续读下去。

名词解释:
TSRM
线程安全资源管理器(Thread Safe Resource Manager),这是个尝尝被忽视,并很少被人说起的“层”(layer), 她在PHP源码的/TSRM目录下。一般的情况下,这个层只会在被指明需要的时候才会被启用(比如,Apache2+worker MPM,一个基于线程的MPM),对于Win32下的Apache来说,是基于多线程的,所以这个层在Win32下总是被启用的。
ZTS
Zend线程安全(Zend Thread Safety),当TSRM被启用的时候,就会定义这个名为ZTS的宏。
tsrm_ls
TSRM存储器(TSRM Local Storage),这个是在扩展和Zend中真正被实际使用的指代TSRM存储的变量名。


 

Zend:


Zend引擎的实现目录,比如脚本的词法语法解析,opcode的执行以及扩展机制的实现等等。

PHP 架构图:

PHP架构图


 

 

appveyor:


持续集成服务 AppVeyor

更多:http://www.tuicool.com/articles/RfAVfuf


 

 

 

build:


主要放置一些和源码编译相关的一些文件,比如开始构建之前的buildconf脚本等文件,还有一些检查环境的脚本等


 

 

 

ext:


官方扩展目录,包括了绝大多数PHP的函数的定义和实现,如array系列,pdo系列,spl系列等函数的实现,都在这个目录中。个人写的扩展在测试时也可以放到这个目录,方便测试和调试。


 

 

main:


这里存放的就是PHP最为核心的文件了,主要实现PHP的基本设施,这里和Zend引擎不一样,Zend引擎主要实现语言最核心的语言运行环境。


 

 

pear:


“PHP 扩展与应用仓库”,包含PEAR的核心文件。


 

 

sapi:


包含了各种服务器(web容器)抽象层的代码,例如apache的mod_php,cgi,fastcgi以及fpm等等接口。


 

scripts:


使用最新的configure.ac autotools命名而不是configure.in(翻译:

Use modern autotools name of configure.ac instead of configure.in


 

tests:


PHP的测试脚本集合,包含PHP各项功能的测试文件


 

 

travis:


 使用Travis进行持续集成


 

 

win32:


这个目录主要包括Windows平台相关的一些实现,比如sokcet的实现在Windows下和*Nix平台就不太一样,同时也包括了Windows下编译PHP相关的脚本。


 

 

继续阅读“PHP7源码目录结构”