shell与php相互调用

来源:互联网 发布:tensorflow 文字识别 编辑:程序博客网 时间:2024/06/05 18:16

现在所在的这家公司,都是在服务器上编程,少不了要和shell打交道,三个多月过去了,linux上常用命令已经记得有二十几个了,当然了,这些是算少的了,但是应付平日的编程足够了。文章的最下面是云笔记里的常用命令,当然了,这些对我是很有用的,而且是时长更新的,如,某天我遇到了问题用某个命令解决了,就会加进去,不过相信一些和我同一级别的菜鸟也还是比较实用的


好了,还是回归正题,在php中调用shell脚本一般用的是sudo,具体为 

$max_current_call_license = `/usr/local/asg/www/scripts/www-license getMaxCallCnt`;//后面的getMaxCallCnt是shell脚本的方法

简单说完了php调用shell,在说下如何在命令行上如何调用php脚本,下面是个简单的php脚本

echo "number:".$argc."\n";  //$argc为在命令行上输入参数的个数,也相当于数组的长度echo $argv[1]."\n";               echo $argv[2]."\n"; print_r($argv);                       //$argv就是一个数组,其值就是命令上的参数

下面是在命令上调用

[root@localhost html]# /usr/local/httpd/bin/php test.php abc 123 456number:4abc123Array(    [0] => test.php    [1] => abc    [2] => 123    [3] => 456)

看到这里是不是明白了,对,和shell调用一个原理,只是php调用时前面写的是php环境的的路径,那么现在用在shell里调用php不就举一反三就可以了

#!/bin/shvariable=`/usr/local/httpd/bin/php test.php abc 123 456`//就是把命令上调用的写法原封不动写进shell脚本里,就ok了。

等等,看看到这里,是不是可以联想起什么,对的,如果c调用php脚本,那么我们就可以用shell这座桥来间接调用了。写这段是因为这周我要写个webservice接口,用c调用的,正好可以用这个方法实现。




chmod [who] operator [permission] filename    who: u g o a(所有用户:文件属主、同组用户及其他用户)    operator +(增加权限) -(取消权限) =(设定权限)    permission r w x s(文件属主和组set-ID) t(粘性位*) l(给文件加锁,使其他用户无法访问)    符号模式 chmod a+x,go+w file.conf chmod go-wx file.conf     绝对模式 chmod 644 file.conf chmod 700 file.conf chmod -R 777 ./ (改变当前目录及子目录里面包含文件所有的权限)suid/guid执行该脚本的其他用户具有属主的相应权限在/bin /sbin 中使用 ls -l | grep '^...s'(suid)   ls -l | grep '^...s..s'(guid)chmod  4777 newfile.conf ----->-rwsrwxrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suidchmod  2777 newfile.conf ----->-rwxrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->guidchmod  6777 newfile.conf ----->-rwsrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suid + guid如果检查某个文件的权限为 -rwxrwSrwx 那个S,表示相应的执行权限并未被设置,可以忽略id 显示用户的ID,以及所属群组的ID---->uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)常用来找出当前用户所属的组umask 设置文件及目录创建时的缺省值直接在命令行上打印umask,会显示系统设置的缺省值,022umask中目录的各个数字最大值为7,文件最大值为6(系统不允许创建的文件具有可执行权限)022---->目录为755,文件为644该缺省值一般在/etc/profile文件中设置,每个用户在登陆时都会引用这个文件若想永久设置umask的值,可把它放在/home目录下.profile或.bash_profile文件中ln 为某一个文件在另外一个位置简历一个同步的链接,分为软链接和硬链接ln -s 源文件 目标文件 ------>软链接, 它只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间ln 源文件 目标文件     ------>硬链接,它会在选定的位置上生成一个和源文件大小相同的文件ls list 列出目录内容-1 每列仅显示一个文件或目录名称-t 用文件和目录的更改时间排序-r 或--reverse 反向排序-l 使用详细格式列表-h或--human-readable 用"K","M","G"来显示文件和目录的大小-s或--size   显示文件和目录的大小,以区块为单位。-S   用文件和目录的大小排序。ssh 远程登录(Securt SHELL) ssh root@192.168.100.55登陆到远程的linux服务器后,可以用exit退出,又回到当前的状态scp secure copy的缩写,是linux系统基于ssh登陆进行安全的远程文件拷贝明,可以再linux服务器之间复制文件和目录scp root@192.168.100.55:/etc/samba/smb.conf . (从远程把文件复制到本机)df 查看磁盘的使用量df -lh 以这种形式Filesystem            Size  Used Avail Use% Mounted on 查看磁盘的详细情况du-a或-all 显示目录中个别文件的大小-k或--kilobytes 以1024 bytes为单位-m或--megabytes 以1MB为单位-s或--summarize 仅显示总计。find  按name(名称)选项来查找,格式 find ~ -name filename -print~ 为在$home(根目录)目录下查找文件.   为在当前目录及其子目录下查找文件/etc 在该目录及子目录查找文件/ 为系统根目录下查找find . -name '[a-z][0-9]*.txt' -print  在当前目录及子目录下查找以字母开头及第二位数是数字的txt文件按perm(权限)选项来查找,格式 find . -perm 755 filename -printfind . -perm -005 filename -print 则是指具体的o中5这个权限按prune(忽略目录)选项来查找,格式 find ./ -path './temp' -prune -o -name filename -print按user/nouser group/nogroup (属主、用户组)选项来查找,格式find . user root -print / find . nouser -print (可以查找属主在/etc/passwd文件中没有有效用户的文件)find . group root -print / find . nogroup -print按mtime(时间)选项来查找,格式-号,之内的 find /usr -mtime -3 -print  查找3天之内的更改的文件+号,之前的  find /usr  -mtime +3 -print  查找3天之前的更改的文件按newer(某个新或旧文件)选项来查找,格式 find . newer a.txt ! newer b.txt -print 查找比a新比b旧的文件查找两个小时以前的文件,可以使用touch -d 10101200(2010 10 12:00)filename 命令来创建一个固定时间的文件,接着就可以查找了 find . -newer filename -print按type(文件类型)选项来查找,格式d目录,查找该目录下所有的目录  find ./ -type d -print  查找该目录以外所有的目录  find ./   !  -type d -printl链接文件,查找该目录下所有的链接文件 find . -type l -print (用ls -l也可以查出,不过这时查找链接文件最上面的那个目录)按size(文件大小)选项来查找,格式c字节,find . -size +1000c -print (+大于 -小于)n块(1块512字节) find . - size +100 -printlocate 快速查找文件 location filename使用方法:locate xx(要查找的文件名) -l num(要显示的行数)。当然这个文件名在系统中出现太多,就需要用到-l这个参数。不然等着刷屏吧。正则使用参数:-r, –regexp REGEXPcat 查看文件内总行数 cat filename | wc -l 清空文件 cat /dev/null > /etc/test.txt -n 由 1 开始对所有输出的行数编号 cat -n filename-b,和-n类似,对空白行不输出编号将几个文件合并为一个文件。 cat   file1   file2  > file创建一个文件 cat filename-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行   关于shell中:>/dev/null 2>&1 详解shell中可能经常能看到:>/dev/null 2>&1命令的结果可以通过%>的形式来定义输出分解这个组合:“>/dev/null 2>&1” 为五部分。1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt2:/dev/null 代表空设备文件3:2> 表示stderr标准错误4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于15:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"因此,>/dev/null 2>&1也可以写成“1> /dev/null 2> &1”那么本文标题的语句执行过程为:1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。2>&1 :接着,标准错误输出重定向 到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。   rpm RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”    rpm 执行安装包:二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。常用命令组合: -ivh:安装显示安装进度--install--verbose--hash-Uvh:升级软件包--Update;-qpl:列出RPM软件包内的文件信息[Query Package list];-qpi:列出RPM软件包的描述信息[Query Package install package(s)];-qf:查找指定文件属于哪个RPM软件包[Query File];-Va:校验所有的RPM软件包,查找丢失的文件[View Lost]; -qa:查看系统中所有已经安装的包,要加 -a 参数 -e:删除包另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。当找到含有你所需软件的站点并与此网站连接后,执行下面的命令即可实现在线安装,譬如在线安装Linux-1.4-6.i368.rpm,可以用命令:rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpmhttp://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html cut 用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型 cut -d : -f 1,5 /etc/passwd #-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段     #这里取出的是第一个和第五个字段。cut -d: -f 3- /etc/passwd #从第三个字段开始显示,直到最后一个字段。使用cut命令还可以剪切以字符数量为标量的部分字符,该功能通过-c选项实现,其不能与-d选项共存。cut -c 1-4 /etc/passwd #取每行的前1-4个字符。cut -c-4 /etc/passwd #取每行的前4个字符。cut -c4- /etc/passwd #取每行的第4个到最后字符。cut -c1,4 /etc/passwd #取每行的第一个和第四个字符。cut -c1-4,5 /etc/passwd #取每行的1-4和第5个字符。tac&&revtac其实是cat的反写,cat正常输出,那tac就倒着输出,不过从行的最后一行输出,那rev呢?rev是每行的最后一个字母到第一个字母倒序输出。sed sed(stream editor流编辑器)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:sed [-nefri] ‘command’ filename        常用选项:-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e∶直接在指令列模式上进行 sed 的动作编辑;-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)-i∶直接修改读取的档案内容,而不是由屏幕输出。       常用命令:a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!tar 解压缩命令tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成 『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包! 范例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩! [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩 # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ # 上述指令在执行的时候,会显示一个警告讯息: # 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时, # 就得要加上 z 这个参数了!这很重要的!范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已 [root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限! [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!范例六:在 /home 当中,比 2005/06/01 新的文件才备份 [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home范例七:我要备份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf - /etc | tar -xvf - # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的! # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ # 这分别代表 standard output, standard input 与管线命令啦! date 可以用来显示或设定系统的日期与时间date +%x 11/02/2012date -R 查看系统时区 Fri, 16 Nov 2012 09:27:31 +0800 东八区tzselect 修改时区 date -s 06/22/96  设置日期date -s 13:52:00  设置时间date +%s 可以得到UNIX的时间戳   修改时区set_timezone(){    TIME_ZONE_CONF="/etc/sysconfig/clock"    region=`echo $1 | cut -d: -f1`    city=`echo $1 | cut -d: -f2`    TIME_ZONE_LINK="/etc/localtime"    TIME_ZONE_FILE="/usr/share/zoneinfo/$region/$city"    if [ -f $TIME_ZONE_FILE ]    then        # change localtime        rm -f $TIME_ZONE_LINK        ln -sf $TIME_ZONE_FILE $TIME_ZONE_LINK        # change system time config        sed -i "s/^ZONE=.*/ZONE=\"$region\/$city\"/" /etc/sysconfig/clock        sed -i "s/^UTC=.*/UTC=true/" /etc/sysconfig/clock    fi}[root@localhost Asia]# cat /etc/sysconfig/clockZONE="Asia/Chongqing"UTC=trueARC=false   crontab crontab命令的功能是在一定的时间间隔调度一些命令的执行。/etc/crontab 文件       在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。      如:[root@dave ~]# cat /etc/crontabSHELL=/bin/bash     PATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号HOME=/ //使用者运行的路径,这里是根目录# run-parts01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本         大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置你也可以将这个服务在系统启动的时候自动启动:在/etc/rc.d/rc.local这个脚本的末尾加上:/sbin/service crond start            * * * * * command        除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。直接用crontab命令编辑cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数crontab -l //列出某个用户cron服务的详细内容crontab -r //删除某个用户的cron服务crontab -e //编辑某个用户的cron服务比如说root查看自己的cron设置:crontab -u root -l再例如,root想删除fred的cron设置:crontab -u fred -r在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txtwc 为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出,格式 wc 【选项】 文件-c 统计字节数-m 统计字符数-l 统计行数-w 统计单词数上述命令可以组合使用,但出现的顺都是 行数 单词数 字节数 文件名 wc -lwc filename 和 wc filename的结果是一样的   1个字节等于8个bit位,每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节书不太一样。     chkconfig更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。使用格式:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]使用要点:要启动的服务的脚本,必须放在/etc/init.d目录下示例:让samba服务器随系统自动开机启动---> chkconfig --add smb chkconfig --level 35 smb onlevel参数详解      等级0表示:表示关机      等级1表示:单用户模式      等级2表示:无网络连接的多用户命令行模式      等级3表示:有网络连接的多用户命令行模式      等级4表示:不可用      等级5表示:带图形界面的多用户模式      等级6表示:重新启动grep    Global Regular Expression Print 的缩写对于标准输入的每一行,grep执行以下的操作:(1) 把下一输入行复制到模式空间中. 模式空间是只可保存一个文本行的缓冲区.(2) 对模式空间应用正则表达式.(3) 如果有匹配存在,该行从模式空间中被复制到标准输出.grep实用程序对输入的每行重复这三个操作步骤.    -v    反检索,只显示不匹配的行。    -q    取消显示,只返回退出状态。0则表示找到了匹配的行。if [ -e filename ] ------>注意要有空格then     echo ''zzelse     echo ''fi-b    当file存在并且是块文件时返回真-c    当file存在并且是字符文件时返回真-d    当pathname存在并且是一个目录时返回真-e    当pathname指定的文件或目录存在时返回真-f     当file存在并且是正规文件时返回真-g     当由pathname指定的文件或目录存在并且设置了SGID位时返回为真-h     当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效-k     当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真-p     当file存在并且是命令管道时返回为真-r     当由pathname指定的文件或目录存在并且可读时返回为真-s     当file存在文件大小大于0时返回真-u     当由pathname指定的文件或目录存在并且设置了SUID位时返回真-w    当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。-o     当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。比较字符写法:-eq    等于-ne    不等于-gt     大于-lt      小于-le     小于等于-ge    大于等于-z      空串* =    两个字符相等* !=   两个字符不等* -n   非空串计算文件有多少行 grep -c '' www-sys-infowc -l filenamecat filename | wc -l计算目录内有多少文件ls -1 | wc -l [ls以长格式(每文件一行)显示当前目录中的文件信息;以它的输出作为wc命令的输入,这样就可以统计出当前目录中文件的个数~~~]查看文件大小 ls filename -l[h] 加了h参数后,文件的大小会显示成多少kstat filename 更详细查看CPU的详细使用信息 cat /proc/cpuinfo在目录下递归查找某个字符grep 'zed' ./ -Rif [ $? -ne 0]then    echo  '$?表示上一条命令的返回值,返回1执行失败'else    echo '$?表示上一条命令的返回值,返回0执行成功'fi ${ } 的一些特异功能:假设定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值:${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt${file##*.}:拿掉最后一个 .  及其左边的字符串:txt${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)${file%.*}:拿掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file${file%%.*}:拿掉第一个 .  及其右边的字符串:/dir1/dir2/dir3/my记忆的方法为:# 是去掉左边(在鉴盘上 # 在 $ 之左边)% 是去掉右边(在鉴盘上 % 在 $ 之右边)单一符号是最小匹配﹔两个符号是最大匹配。    ubuntu如何切换到root调出终端(ctrl+alt+t或是单击左上角的dash home-->在右侧弹出的窗口中单击下面左侧第二个按钮---->在单击install查找terminal)在命令行上输入sudo -s,之后变输入安装ubuntu时的密码,之后便进入root退出在键盘上输入exit乌班图下php.ini的位置 /etc/php5/apache2/php.ini在乌班图下重启apache服务,出现httpd: Could not reliably determine the server's fully qualified domain name,解决办法只需在/etc/apache2中编辑httpd.conf文件,在里面加入ServerName 127.0.0.1,后面的ip地址是上面警告的ip

最下面的为云笔记的分享链接,有兴趣的可以看看

点击打开链接


原创粉丝点击