- 第三节 配置DHCP服务
一.DHCP概述
1.分配IP地址的方法
基本网络配置:IP,子网掩码,默认网关,DNS,
静态
DHCP: 动态的,集中的管理和维护,网络参数是正确的,方便移动计算机,提高IP地址的利用率
2.DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是IETF(Internet网络工程任务小组)设计,分配TCP/IP信息的网络协议,DHCP负责管理已分配的IP地址和地址池中的地址
DHCP客户:不同的户机或工作站
DHCP服务器:提供网络配置参数给DHCP客户的主机
DHCP中继代理:在DHCP客户和DHCP服务器之间转DHCP消息
租用:客户获得并临时占用IP地址
3.为什么要使用DHCP:集中配置和维护,客户的网络被重新启动或客户重新引导系统发生新的租约
4.DHCP的设计目标
DHCP是一种机制,管理员控制配置参数
DHCP可以和路由器以及DHCP中继代理一起工作,即跨路由获取IP地址
DHCP服务器本身必须使用静态IP的配置
DHCP客户重新启动后仍然能够保留它原来的配置参数
DHCP必须能够为早期的BOOTP客户提供服务
二.DHCP的工作过程
客户机首次获得IP租约
1.IP租约请求:DHCP客户启动计算机后,通过UDP67端口广播DHCPDISCOVER包
2.IP租约提供:网络中所有的DHCP服务器均会收到DHCPDISCOVER包,DHCP服务器通过UDP端口68给客户回应DHCPOFFER包,提供IP参数
3.IP租约选择:客户选择第一个收到DHCPOFFER包,并向网络中广播DHCPREQUEST包,选择IP地址和通知其它服务器收回保留的IP参数
4.IP租约确认:DHCP服务器返回DHCPACK消息包,表明已接收客户机的选择
DHCP客户进行IP租约更新:在租期50%和87.5%时客户机以单播方式发出DHCPREQUEST信息包.如果DHCP客户机重启时,它将更新上次关机时拥有的IP租用,若更新未成功,客户机将联系现有IP租用中列出的默认网关,否则每5分钟尝试一次重新开始新一轮的IP租用过程.
三.安装配置DHCP服务器
#rpm -qa|grep dhcp
1.放入第二张光盘并挂载光盘:#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh dhcp-3.0pl1-2.3.i386.rpm安装DHCP包
#cd;eject
存放默认DHCP配置文件的路径:/usr/share/doc/dhcp-3.0pl1/dhcpd.conf.sample
2.dhcpd.conf配置文件内容:
ddns-update-style none|interim;配置使用过渡性DHCP-DNS互动更新模式
ignore client-updates;忽略客户更新
subnet 192.168.1.0.0 netmask 255.255.255.0{ 设置子网声明
option routers 192.168.1.1; 指明在客户子网内的路由器的地址,可以有多个,中间用逗号隔开
option subnet-mask 255.255.255.0; 设置子网掩码
option domain-name "abc.com"; 为DHCP客户配置DNS域
option domain-name-server 192.168.1.9; 设置DNS服务器地址
option time-offset-18000;设置与格林威治时间的偏移时间s
range 192.168.1.100 192.168.1.200; 指明要分配的IP地址范围
default-lease-time 21600; 指定缺省的租约时间s
max-lease-time 43200; 指定最大的租约时间,如果DHCP在请求租约时间时有发出特定的租约失效时间的请求则用最大的租约时间
host wnt-zuoj 设置主机声明
{
hardware ethernet 00:11:22:33:44:55; 指定DHCP客户的DHCP声明
fixed-address 192.168.1.9; 对指定的MAC地址分配置固定的IP地址
}
}
3.客户租约数库文件:/var/lib/dhcp/dhcpd.leases
starts: 开始租约时间
ends: 结束时间
binding start active: 绑定网卡的硬件地址
uid: 客户机的UID标识,验证客户机的标识。
client: 客户端的主机名。
4.运行DHCP
#service dhcpd restart 重新启动DHCP服务
#service dhcpd start 启动DHCP服务
#/etc/rc.d/init.d/dhcpd start 启动DHCP服务
5.小型网络中DHCP的部署
网络中提供特殊服务的服务器应采用静态IP地址
不同的网络服务器应由不同的服务器承担
6.大型网络中DHCP的部署
每个子网中至少设置一个DHCP服务器
配置一台与RFDC1542兼容的路由器
在每个子网都设置一台计算机作为DHCP中继代理
7.设置DHCP中继代理
DHCP中继代理dhcrelay允许将DHCP服务器的子网内的DHCP和BOOTP请求转发给其它子网内的一个或多个DHCP服务器,当某个DHCP客户请求信息时,DHCP中继代理把客户请求转发给DHCP中继代理启动时所指定的DHCP服务器.当收到DHCP服务器回应再广播给发送最初请求的网络
在/etc/sysconfig/dhcrelay文件中指定接口,DHCP中继代理监听所有接口上的DHCP请求,中继代理本身要有静态的IP地址
service dhcrelay restart
8.提供备份的DHCP配置
同时设置多个DHCP服务器提花冗余能力,容错能力是通过分割可用的IP地址到不同的DHCP服务器上,让多个DHCP服务器为一个网络服务来实现的,还可将DHCP服务器放置在不同的子网中,并在两个子网中分别设置DHCP中继代理
例192.168.1.0的网络上的serv1的配置片断为:
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.10 192.168.1.199;
}
subnet 192.168.2.0 netmask 255.255.255.0{
range 192.168.2.200 192.168.2.240;
}
位于192.168.2.0的网络上的serv2的配置片断为
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.2.10 192.168.1.199;
}
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.200 192.168.1.240;
}
第三节.WWW服务器的安装和设置
一.Web服务器简介:
1.www:world wide web,web页在网上发布消息、广告宣传及客户服务等
其特点:Web页是图形化的,与平台无关,分布式的,动态的,交互式的
Web系统是客户/服务器式,常用服务器有Apache和IIS,客户端程序是浏览器,如IE、Netscape、Mozilla
URL:统一资源定位器,http://www.bj-xinhua.com/index.htm
HTML:超文本具有超链接的功能,遵从HTML协议
2.常用的Web服务器:在2003年7月Netcraft所调查的站点中使用的是Apachee有63.16%,Microsoft IIS的站点有26.85%
3.Apache的历史:
Apache的开发者全部为志愿者,其名称为A Patchy Server,即它是基于现存的代码和一系列的Patch文件
1995.3Apache-->0.6.2发行版-->同年10月Apache1.0.0版发行-->2002年发行Apache2.0版
4.ASF:Apache由Apache软件基金会Apache Software Foundation来维护
5.Apache的性能:web服务器的功能和运行性能是最重要的因素.Apache的众多特性保证了它可以高效而且稳定的运行
DOS,动态共享对象,允许运行时动态装载模块、采用预生成技术提高响应速度、运行在几乎所有的计算机平台、支持最新的HTTP1.1协议、简单而强有力的基于文件的配置、支持虚拟主机、支持HTTP认证、集成了代理服务器、且有可定制的服务器日志、支持安全Socket层(SSL)、用户会话过程的跟踪能力、支持通用网关接口CGI、集成Perl脚本编程语言、支持服务器端包含命令(SSI)、支持FastCGI、支持PHP、支持Java Servlets、支持第三方软件开发商提供的大量功能模块
6.Apache的三种运行方式:Multi-processing modules
预派生(Profork):首先启动一个父进程,然后创建并启动一定数量的子进程监听客户的请求,父进程始终监控子进程,启动时自动生成8个子进程,最小空闲进程5
工作者(Worker MPM):此模块是混合使用进和线程的运行模型,首先启动一个父进程,然后创建并启动一定数量的子进程 ,每个子进程都创建 并启动相同数量的线程,由线程监听客户的请求,父进程始终监控子进程,当没有足够的空闲线程为客户服务时,父进程就会创建并运行新的子进程
独立子进程(Perchild):混合使用进程和线程的运行模式,每个子进程都可以创建指定数量的线程,当服务器上负载增加后,Apache不会创建新的子进程,而是在当前的子进程之一上创建新的线程为客户提供服务,具有高扩展性,低可靠性
二.Apache2.0的模块:仍旧使用模块的方式运行,Apache由内核、标准模块和第三方提供的模块3个层次组成
三.Apache的安装和启动:
1.Apache的安装
#rpm -qa|grep httpd
插入第一张光盘
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh httpd-2.0.40-21.i386.rpm Apache2.0包
#rpm -ivh httpd-manual-2.0.40-21.i386.rpm Apache2.0手册
#cd;eject
2.启动Apache
#service httpd restart
#pstree|grep httpd
#apachect1 configtest|httpd -t检测配置文件语法的正确性
#service httpd status
#ntsysv
#apachect configtest|httpd -t检查配置文件语法的正确性
#apachectl -v查看编译配置参数
#apachectl -l查看已经被编译的模块
mod_so.c表示当前的Apache支持Dynamic Shared Objects(DSO),即用户可以在不重新编译Apache的情况下使用Apache eXenSion编译的第三方模块
prefork.c表示Red Hat发布的Apache是使用预派生MPM模式运行的
3.Apache的基本配置
KeepAlive on使用保连接的功能,即一次请求连接能响应多个文件
MaxClients 150限制同一时间的连接数不能超过150
ServerAdmin root@localhost设置Apache服务器管理员的E-mail地址
ServerName www.abc.com:80当Apache服务器需要指向本身的连接时使用
DirectoryIndex index.html index.html.var当访问服务器时依次查找页面index.html、index.html.var
IndexOptions 可以在此指令后添加FolderFirst表示让目录列有前面
4.分割配置任务
使用Inclde指令:例如可以将所与虚拟主机配置相关的配置单独存成一个配置文件,然后在主配置文件中将其包含进来
使用.htaccess文件:用于改变主配置文件中的配置,只能设置对目录的访问控制,它可以覆盖主配置文件中的配置,而Include只是简单的包含
(1).何时使用.htaccess不重新启动服务器的情况下改变服务器配置
(2).步骤:
首先在主配置文件中启用并控制对.htaccess文件的使用
然后在需要盖主配置文件的目录下生成.htaccess文件
(3).启用并控制使用.htaccess文件
设置文件名称
AcessFileName .htaccess
<Files ~"./.htaccess">
Order allow,deny
Deny from all
</files>
例1 .htaccess文件的访问控制
#cd /var/www/html #mkdir private #cd private #touch test
修改主配置文件#vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html/private">AllowOverride Options</Directory>
#service httpd restart
#vi /var/www/html/private/.htaccess 添加Options -Indexes
例2配置每个用户的Web站点
配置每个用户的Web站点的意图是使在安装了Apache的本地计算机上,拥有用户帐号的每个用户都能够架设自己单独的Web站点
步骤:
修改主配置文件启用每个用户的Web站点配置
修改主配置文件为每个用户的Web站点目录配置访问控制
vi /etc/httpd/conf/httpd.conf
<IFModule mod_userdir.c>
UserDir disable root
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo Authconfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
#su user1
#cd
#mkdir public_html
#chmod 711 /home/user1
创建Index.html的内容
访问自己的主页
http://IP地址或FQDN/~用户名
例3配置虚拟主机
在一台WEB服务器上,可以为多个单独域名提供Web服务,对于ISP的意义重大,因为使用独立的域名和根网址更为正式,易为众人接受.
基于IP地址的虚拟主机:使用相同的IP地址,不同的端品号。不同的IP地址,相同的端口号
基于名字的虚拟主机:不同的主机头,一个IP地址映射多个域名。
配置不同IP地址的虚拟主机:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
#/etc/rc.d/init.d/network restart
#cd /etc/httpd
#vi vhost-conf.d/ip-vhost34.conf
<VirtualHost 192.168.1.57:80>
ServerAdmin webmaster1@abc.com
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin webmaster1@abc.com
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
创建默认文档
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
#vi /etc/httpd/conf/httpd.conf
<Virtualhost 192.168.1.57:80>
Server Admin netmask@abc.com
DocumentRoot /var/www/html
DirectoryIndex index.html
ServerName 192.168.1.57
</VirtualHost>
<VirtualHost 192.168.1.77:80>
Server Admin netmask@abc.com
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName 192.168.1.77
</VirtualHost>
例4:配置基于端口的虚拟主机,即相同IP地址不同端口号的虚拟主机
#vi vhost-conf.d/ip-vhost12.conf
listen 8080
listen 6666
<Virtualhost 192.168.1.57:8080>
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName rhl9.abc.com:8080
</VirtualHost>
<VirtualHost 192.168.1.57:6666>
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName rhl9.abc.com:6666
</VirtualHost>
创建默认文档
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
例5:配置基于主机头的虚拟主机
配置DNS,编辑正向解析数据库文件
www1 IN A 192.168.1.57
www2 IN A 192.168.1.57
#vi vhost-conf.d/n-vhost.conf
NameVirtualHost 192.168.1.57
<Virtualhost 192.168.1.57:80>
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName www2.abc.com
</VirtualHost>
创建默认文档
#echo "Incaf.d/*.conf">>conf/httpd.conf
例6:访问控制
访问控制指令
Order deny,allow用于指定执行允许访问规则和执行拒绝访问的先后顺序
Deny all表示所有客户|abc.com域名表示域内的所有客户|IP地址,可以指定完整的IP地址或部分IP地址|192.168.1.0/255.255.255.0|192.168.1.0/24定义拒绝访问列表
Allow定义允许访问列表
<Directory /var/www/html/private>
Order deny,allow
deny from all
allow from 192.168.1.57
</Directory>
例7:认证和授权.两种认证类,基本认证Basic和摘要Digest认证,摘要认证比基本认证更加安全,认证指令既可以出现在主配置文件的Directory容器中,也可以出现在./htaccess文件中
授权,为指定用户或组进行授权,授权指令为Require
#vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/private">
AllowOverride None不使用.htaccess文件
AuthType Basic指定基本认证方式
AuthName "abc.com"指定认证领域名称
AuthUserFile /var/www/passwd/abc.com指定认证口令的存放位置
require valid-user
</Directory>
创建认证口令文件,并添加两个用户
#cd /var/www/passwd
#htpasswd -c jamond osmond
#chown apache.apache jamond由于Apache的子进程以apache用户运行
#service httpd restart
组织和管理站点内容
Web服务器的两方面的问题:如何在文档根目录空间不足的情况下继续添加站点内容,如何在文件移动位置之后使得用户仍然能够访问
例8:符号链接
在Apache的默认配置中已经包含了符号链接的指令
<Directory />
Options FollowSymLinks
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
</Directory>
#cd /var/www/html
#ln -s /usr/share/doc doc
例9:别名能将根文档目录以外的内容加入站点,它可使用Directory容器配置对别名目录的访问权限
#vi /etc/httpd/conf/httpd.conf
Alias /ftp /var/ftp/pub
<Directory "/var/ftp/pub">
AllowOverride None
Options Indexes
Order allow,deny
Allow from all
</Directory>
例10:页面重定向,在文件移动位置之后使得用户仍然能够访问
假如某个静态站点,当月的新闻存放在news目录下的子文件夹中,如六月的新闻存放在new/jun目录下,当六月过去之后,管理员将jun目录移动到old-news目录,同时将访问news/jun的URL重定向到old-news
#cd /var/www/html
#mkdir news old-news
#mkdir news/jun
#mkdir old-news/jun
#echo "Jun news">news/jun/index.html
#echo "Jun news(old)">old-news/jun/index.html
#vi /etc/httpd/conf/httpd.conf
#Redirect 303 /news/jun http://192.168.1.57/old-news/jun
#service httpd restart
日志管理和统计分析,能够有效掌握系统运行情况以及网站内容的被访问情况,加强对整个网站及其内容的维护与管理,提高内容的可读性,挣取广告商的费用,Apache的标准中规定了4类日志
例11:错误日志:ErrorLog logs/error_log
LogLevel warn定义日志等级,emerg出现紧急情况使得该系统不可用,如系统宕机等 alert需要立即引起注意的情况 crit危险情况的警告 error 除了emerg、alert、crit的其他错误 warn警告信息,记录紧急程度为1至5的所有错误信息
例12:配置访问日志#cat /etc/httpd/logs/error_log
日期和时间 错误等级 错误消息
配置访问日志:为了便于分析Apache的访问日志,定义了访问日志的格式为4类
普通日志格式(common log format,CLF)common大多数日志分析软件都支持这种格式
参考日志格式(referer log format)referer 记录客户访问站点的用户身份
代理日志格式(agent log format)agent 记录请求的用户代理
综合日志格式(combined log format)combined结合以上三种日志信息
LogFormat "%h%l%u%t/"%r/"%>s%b/"%{Referer}i/"/"%{User-Agent}i/"" combined %h客户机的IP地址 %l从identd服务器中获取远程登陆名称(-表示没有取得该项信息) %u来自于认证的远程用户 %t连接的日期和时间 %rHTTP请求的首行信息 %>s响应请求的状态代码 %b传送的字节数1203 %{Referer}i发给服务器的请求头信息 %{User-Agent}i使用的浏览器信息
CustomLog logs/access_log combined (/var/log/httpd)
例13:在Apache上运行CGI
CGI,Common Gateway Interface公共网关接口,它提供了一般的指导,没有指定特定的编程语言,程序员可以选择自己熟悉的语言,如C、C++、Shell等
mod_cgi模块是Apache2.0默认安装支持CGI的一个模块.在Apache的配置文件中有如下的模块加载配置语句
<IfModule prefork.c>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None Options None Order allow,deny Allow from all
</Directory>
AddHandler cgi-script .cgi 让Apache服务器识别cgi文件
操作步骤:
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/cgi-bin">AllowOverride None Options ExecCGI -Indexes Order allow,deny Allow from all</Directory>
AddHandler cgi-script .cgi .pl让Apache服务器识别cgi文件
#service httpd restart
#vi /var/www/cgi-bin/hello.cgi
#! /usr/bin/perl
print "Content-type:test/plain/n=n";
print "Hello World./n";
#
#chmod 755 /var/www/cgi-bin/hello.cgi
例14:在Apache上运行PHP
PHP是一种HTML嵌入式的后台脚本编程语言.PHP独特的语法混合了C、Java、Perl以及PHP式的新语法.它可以比C或者Perl更快的执行动态网页,它是它是跨平台的开放源代码,其功能有
支持多种系统平台,可移值性强
在服务器端嵌入脚本,创建个性化的Web页面
具有强大而广泛的数据库支持
具有极好的开放性和可扩展性
具有自由软件特性,且更新速度快
具有结构化特性和对象式的设计方法
支持Internet开发的一些前沿技术,包括身份验证、XML、动态图象生成、共享内存、WDDX,以及动态PDF文档
安装PHP
插入第一张光盘
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
安装PHP所需的curl和gd
#rpm -ivh curl-7.9.8-5.i386.rpm
#rpm -ivh gd-1.8.4-11.i386.rpm
#rpm -ivh php-4.2.2-17.i386.rpm安装PHP
#rpm -ivh php-imap-4.2.2-17.i386.rpm安装PHP的imap支持包
插入第2张光盘
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS/
#rpm -ivh php-manual-4.2.2-17.i386.rpm安装PHP手册
#rpm -ivh php-mysql-4.2.2-17.i386.rpm安装PHP的MySQL支持包
#rpm -ivh php-pgsql-4.2.2-17.i386.rpm
#cd;eject
配置Apache使用mod_php模块
#cd /etc/httpd/conf.d/
#grep -v "#" php.conf
LoadModule php4_module modules/libphp4.so
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 524288
</Files>
设置用于处理服务器回应的过滤器
语法: SetOutputFilter 过滤器[;过滤器...]
模块: core
DirectoryIndex index.php
#service httpd restart
cd /var/www/html
echo "?phpinfo()?>">info.php
<html>
<head>
<title>First program</title>
</head>
<body>
<?php
echo "hello, world/n";
?>
</body>
</html>
<script language="php">
echo ("这是类似 JavaScript 及 VBScript 语法
的 PHP 语言嵌入范例");
</script>
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
<?php
/*
echo "这是错误的示范。/n"; /* 递归注释会引起问题 */
*/
?>
<?php
define("COPYRIGHT", "Copyright © 2000, netleader.126.com");定义常量,常量必须用字母打头
echo COPYRIGHT;
?>
五种变量string integer double array object
$mystring = "我是字符串";
$WilsonPeng = "真是认真的作者";
$NewLine = "换行了/n";
$int1 = 38;
$int2 = 49;
$hexint = 0x10;
$float1 = 1.732;
$float2 = 1.4E+2;
$MyArray1 = array("子", "丑", "寅", "卯");
$MyArray2 = array(
"地支" => array("子", "丑", "寅", "卯"),
"生肖" => array("鼠", "牛", "虎", "兔"),
"数字" => array(1, 2, 3, 4)
);
类的使用上就比较麻烦了,要先定义类别,甚至必须先要方法,才能使用类,如下例:
class foo {
function do_foo () {
echo "Doing foo.";
}
}
<?php $int1=1;$int2=2;$int3=$int1+$int2;echo $int3;?>
循环控制
<?php $fruit[0]=banana;$fruit[1]=orange;for($i=0;$i<2;$i++)echo "fruit[$i];"?>
PHP中的日期及时间 <?php $birthday_stamp = mktime(19,45,0,3,10,1975);$birthday_formatted = date('F d, Y - g:ia',$birthday_stamp);echo "David was born on $birthday_formatted."?>
David was born on March 10, 1975--7:45 p.m.
函数
也就是说用户可以自行组合函数或者是类。
PHP 中的函数 (function) 和 C 语言一样,包括有返回值及无返回值
在函数的名称上,PHP 对于大小写的管制很松散。可以在定义函数时写成大写的名字,而在使用时使用小写的名字
以下就是函数的使用语法
function myfunc($arg_1, $arg_2, ..., $arg_n) {
// 执行一些步骤
return $retval;
}
在使用时,在自定的函数名称前要加入 function 的保留字,表示这是定义用户自定函数。之后的 myfunc 可以是任何的英文字母开头的字符串,字符串除了开头不能是数字或是下划线,在第一个字母后可以是阿拉伯数字或者是下划线,当然其它的符号或是中文字不能当函数名。
$arg_1 到 $arg_n 为函数使用的参数,参数之间使用逗号隔开。在参数后的大括号 {},即为整个函数的部分。函数如果返回值,使用 return 可将值返回。而参数可以事先定义初始值或默认值。有定义默认值参数在使用函数时可以省略,但一定要放在没有配置默认值参数的后面,否则 PHP 在解析函数时,会出现错误。
另外就是参数的类型,只要参数是 PHP 支持的变量类型都可以使用,无论是数组、字符串、或是整数....等等。返回值也是一样。
下面即为使用默认值及不用默认值例子
<?php
function myfunc($arg_1, $arg_2, $arg_3="我是默认字符串") {
echo $arg_1+$arg_2<br>;
echo $arg_3."<br>";
}
myfunc(3, 4); // 参数 $arg_3 省略。
myfunc(6, 6, "不用默认值") // 输入参数 $arg_3。
《网络操作系统——LINUX》教学大纲3
最新推荐文章于 2024-07-24 18:29:34 发布