-
apache2: Syntax error on line 146 of /etc/apache2/apache2.conf
2018-07-08 15:34:20在我的kali上systemctl start apache2的时候apache启动失败,运行systemctl status apache2.service查看状态,发现是这个问题, Jul 08 15:22:27 kali apachectl[1789]: apache2: Syntax error on line 146 of /etc...在我的kali上
systemctl start apache2
的时候apache启动失败,运行systemctl status apache2.service
查看状态,发现是这个问题,Jul 08 15:22:27 kali apachectl[1789]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot
于是google了一下,找到这个,说是要安装一个库
sudo apt-get install libapache2-mod-php5
但是我运行之后发现不行,出现这个错误:# apt install libapache2-mod-php5 Reading package lists... Done Building dependency tree Reading state information... Done Package libapache2-mod-php5 is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'libapache2-mod-php5' has no installation candidate
可能php5太老了,不支持了吧。然后我看了看我默认的php版本,是7.0。于是索性将php5相关的都删掉,然后运行apache果然成功了。
root@kali:/var/www/html/CTF# ll /etc/apache2/mods-enabled/ total 8.0K drwxr-xr-x 2 root root 4.0K Jan 17 22:59 ./ drwxr-xr-x 8 root root 4.0K Jul 5 19:01 ../ lrwxrwxrwx 1 root root 36 Feb 1 2016 access_compat.load -> ../mods-available/access_compat.load lrwxrwxrwx 1 root root 28 Feb 1 2016 alias.conf -> ../mods-available/alias.conf lrwxrwxrwx 1 root root 28 Feb 1 2016 alias.load -> ../mods-available/alias.load lrwxrwxrwx 1 root root 33 Feb 1 2016 auth_basic.load -> ../mods-available/auth_basic.load lrwxrwxrwx 1 root root 33 Feb 1 2016 authn_core.load -> ../mods-available/authn_core.load lrwxrwxrwx 1 root root 33 Feb 1 2016 authn_file.load -> ../mods-available/authn_file.load lrwxrwxrwx 1 root root 33 Feb 1 2016 authz_core.load -> ../mods-available/authz_core.load lrwxrwxrwx 1 root root 33 Feb 1 2016 authz_host.load -> ../mods-available/authz_host.load lrwxrwxrwx 1 root root 33 Feb 1 2016 authz_user.load -> ../mods-available/authz_user.load lrwxrwxrwx 1 root root 32 Feb 1 2016 autoindex.conf -> ../mods-available/autoindex.conf lrwxrwxrwx 1 root root 32 Feb 1 2016 autoindex.load -> ../mods-available/autoindex.load lrwxrwxrwx 1 root root 30 Feb 1 2016 deflate.conf -> ../mods-available/deflate.conf lrwxrwxrwx 1 root root 30 Feb 1 2016 deflate.load -> ../mods-available/deflate.load lrwxrwxrwx 1 root root 26 Feb 1 2016 dir.conf -> ../mods-available/dir.conf lrwxrwxrwx 1 root root 26 Feb 1 2016 dir.load -> ../mods-available/dir.load lrwxrwxrwx 1 root root 28 Feb 1 2016 dnssd.conf -> ../mods-available/dnssd.conf lrwxrwxrwx 1 root root 28 Feb 1 2016 dnssd.load -> ../mods-available/dnssd.load lrwxrwxrwx 1 root root 26 Feb 1 2016 env.load -> ../mods-available/env.load lrwxrwxrwx 1 root root 29 Feb 1 2016 filter.load -> ../mods-available/filter.load lrwxrwxrwx 1 root root 27 Feb 1 2016 mime.conf -> ../mods-available/mime.conf lrwxrwxrwx 1 root root 27 Feb 1 2016 mime.load -> ../mods-available/mime.load lrwxrwxrwx 1 root root 34 Feb 1 2016 mpm_prefork.conf -> ../mods-available/mpm_prefork.conf lrwxrwxrwx 1 root root 34 Feb 1 2016 mpm_prefork.load -> ../mods-available/mpm_prefork.load lrwxrwxrwx 1 root root 34 Feb 1 2016 negotiation.conf -> ../mods-available/negotiation.conf lrwxrwxrwx 1 root root 34 Feb 1 2016 negotiation.load -> ../mods-available/negotiation.load lrwxrwxrwx 1 root root 27 Jan 17 22:59 php5.conf -> ../mods-available/php5.conf lrwxrwxrwx 1 root root 33 Apr 26 2017 php5filter.conf -> ../mods-available/php5filter.conf lrwxrwxrwx 1 root root 33 Apr 26 2017 php5filter.load -> ../mods-available/php5filter.load lrwxrwxrwx 1 root root 27 Jan 17 22:59 php5.load -> ../mods-available/php5.load lrwxrwxrwx 1 root root 29 Jan 17 22:59 php7.0.conf -> ../mods-available/php7.0.conf lrwxrwxrwx 1 root root 29 Jan 17 22:59 php7.0.load -> ../mods-available/php7.0.load lrwxrwxrwx 1 root root 33 Jan 29 2017 reqtimeout.conf -> ../mods-available/reqtimeout.conf lrwxrwxrwx 1 root root 33 Jan 29 2017 reqtimeout.load -> ../mods-available/reqtimeout.load lrwxrwxrwx 1 root root 31 Feb 1 2016 setenvif.conf -> ../mods-available/setenvif.conf lrwxrwxrwx 1 root root 31 Feb 1 2016 setenvif.load -> ../mods-available/setenvif.load lrwxrwxrwx 1 root root 29 Feb 1 2016 status.conf -> ../mods-available/status.conf lrwxrwxrwx 1 root root 29 Feb 1 2016 status.load -> ../mods-available/status.load root@kali:/var/www/html/CTF# cd /etc/apache2/mods-enabled/ root@kali:/etc/apache2/mods-enabled# rm php5.conf php5filter.conf php5filter.load php5.load root@kali:/etc/apache2/mods-enabled# rm ../mods-available/php5.conf ../mods-available/php5filter.conf ../mods-available/php5filter.load ../mods-available/php5.load root@kali:/etc/apache2/mods-enabled# systemctl start apache2 root@kali:/etc/apache2/mods-enabled# netstat -plnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 534/sshd tcp6 0 0 :::22 :::* LISTEN 534/sshd tcp6 0 0 :::80 :::* LISTEN 1821/apache2
然后这个问题有人还说需要安装
libapache2-mod-php
,但是我安装的时候发现这个库已经是最新版本了。 -
Job for apache2.service failed apache2无法启动解决
2017-11-25 10:29:11之前由于在apache上面打算配置虚拟域名,于是对apache的配置文件进行...Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" ...之前由于在apache上面打算配置虚拟域名,于是对apache的配置文件进行各种操作,导致后来不知道怎么回事apache重启和开启的时候一直报错
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
于是去查看apache2的错误日志/var/log/apache2/也没有找到解决办法,于是卸除apache从新安装apache和php
第二天在调配置文件的时候又遇到这个问题,两个过程中我都是用到了软连接,于是在想是不是软连接出了什么问题,仔细查了一下软连接是什么
linux下的软链接类似于windows下的快捷方式。 实例: ln -s httpd.conf confighttp 其中 httpd.conf 就是源文件,confighttp是链接文件名,其作用是当编辑confighttp ,实际上是链接编辑httpd.conf。 如果要删除软链接: rm -rf confighttp 这样只会删除confighttp链接文件,而不会删除源文件httpd.conf。 相对于软连接,还有硬链接, 建立硬链接命令: ln httpd.conf confighttp 硬链接文件相当于一个文件存储在两个位置,可以有效防止误删。
于是使用命令尝试下删除之前的软连接,发现成功。apache恢复,问题解决
-
Apache2配置目录分析(详细版)
2018-05-06 14:21:44我们来看apache2服务器的标准启动命令:/etc/init.d/apache2 start。其他命令如service apache2 start都是间接调用了上面的命令,找到脚本apache2然后执行而已。/etc/init.d这个目录是所有服务的脚本,可以通过执行...ls -al用来查看软件的软链接信息。出现->的都是进行了软链接,后面才是真正的目录。
我们来看apache2服务器的标准启动命令:
/etc/init.d/apache2 start
其他命令如service apache2 start都是间接调用了上面的命令,找到脚本apache2然后执行而已。
/etc/init.d这个目录是所有服务(如何web服务、ftp服务、mysql...)的脚本,通过在执行脚本时加上参数,可以开启、关闭或者重启对应的服务。上面就是执行init.d文件及下的apache2脚本来启动apche2服务器,其他服务器都是类似原理。
下面就是脚本文件的内容,开头#!/bin/sh就是表明了这个脚本文件是用Shell--sh来执行的,其他的就不看了。
我们输入/etc/init.d/apache2 start时候,系统就会执行apache2脚本文件,然后会转去调用配置文件apache2.conf。
这个文件就是apache2服务器的配置文件,它在 /etc/apache2目录下。
我们来看看这个配置都写了啥:
上面将/etc/apache2目录大致情况列举了出来。大致意思就是里面有配置
1、apaceh2.conf、 2、端口配置文件port.conf、 3、mods-enable文件夹,这个文件夹下都是*.load和*.conf后缀的文件。 4、site-enable文件夹,这个文件夹下都是*.conf后缀的文件。
其实还有其他的文件,它没列举出来。请看下图,比上图更直接清晰:
我们再接着看apache2.conf的内容:
第一句的大致意思就是在说,apache2.conf是个主配置文件,当apache2服务器启动时,就将零散的配置文件以Including方式组合在一起。看到这,你就应该知道了,这个文件不是真正的具体配置文件,它只是把各个零散的配置文件以inluceding方式包含进来。apache2.conf其实就是负责调用其他配置文件的。不信看下图:
这就是将端口配置文件包含进来调用。这个配置文件它是怎么写的,apache2.conf根本是不知道到,因为不是它写的。
其他也类似,如下面的就是将配置文件conf-enable和sites-enable这两个配置启动文件包含进来。它也没具体的实现部分。
我们来看下mods-availablel和mods-enabled文件夹:这两个文件夹里面存放的都是一些apache2的读写操作等模块,mods-enabled是apache2服务器的启动配置文件,mods-available是apache2服务器可以使用的配置文件,如下图;
通过上面,你是不是发现了什么?
我们发现mods-enable里面的文件都是mods-available中的快捷方式(或则称为软连接)。
再看mods-available的内容,下图是mods-avalible文件夹下的rewriter模块文件信息:
我们发现,这里才是具体配置的代码实现部分。
所以,你如果想给apache2添加什么功能模块,直接建立一个从avalible中建立一个快捷方式到enabled中就行了,删除也是一样,删掉enabled中的某模块的快捷方式就行了,实际的模块代码还在available中没有消失。
我们再来看看下面两个比较重要的配置文件夹site-available和site-enabled。这两个是网站根目录的配置文件。
sites-enabled是apache2正在使用的网站配置文件,sites-available是apache2可用的网站配置文件。
enabled中只有一个000-default.conf快捷方式。availbel中有一个000-default.conf和default-ssl.conf两个文件。
000-default.conf是使用http协议网站的默认网站配置文件,而default-ss.conf是https协议网站才使用的默认网站配置文件。
https还需要申请ssl证书,这里我们就不讲default-ss.conf,反正我也用不到https协议。
打开000-defaut.con文件。
ServerAdmin: 设置一个邮件地址,如果服务器有任何问题将发信到这个地址, 这个地址会在服务器产生的某些页面中出现。
DocumentRoot 是这个站点的根目录,这样 Apache2 启动时会扫描 /etc/apache2/sites-enabled 中可用的 website 配置并加载。
当用户访问localhost:80 时,Apache2 就将 default 站点根目录 /var/www/html 下的index.html(或 index.PHP 等,可配置)作为请求的回应返回给浏览器,然后你能欣赏到的就是 /var/www/html/index.html 这个文件的内容了。
我们现在试着修改这里的根目录为:/var/www,然后写一个html文件,文件内容如下:
<html> <head> <body>this is my website</body> </head> </html>
特别注意;我们修改了apache2配置信息,但必须重启才能生效。
service apacehe2 restart
或
/etc/init.d/apache2 restart。
一定记住,每次修改配置后,都要重启apache2服务器,不然配置不会立即生效。
特别注意,我们现在这样访问网站,是不会显示具体内容的。不信看图:
我们发现,我们通过浏览器是看到了我们的test.html文件,但是为什么没显示内容呢。
那是因为服务默认的显示格式没有test.html。默认的显示格式在/etc/apache2/mods-available/dir.conf文件中。如下图所示:默认显示的格式有:index.html index.cgi index.pl index.php index.xhtml index.htm
我们在dir.conf文件最后添加test.html格式。看看能不能显示呢:
nice, 成功了。
看了这么多,你对apache2的目录是不是了解了不少呢,现在请尝试修改下网站根目录实践一下吧。
如果你觉得博主的文章对你有用,请给博主一个一个赞/关注。
-
配置apache2目录
2017-11-03 22:19:59前段时间在ubuntu中搞了很久apache2服务器,可是还是搞得不太懂,今天又重新搞,基本明白了apache2的配置。刚开始在网上搜索的,很多说是找http.conf文件,可是我找了很久,都没有找到这个配置文件。在/etc文件夹中,...前段时间在ubuntu中搞了很久apache2服务器,可是还是搞得不太懂,今天又重新搞,基本明白了apache2的配置。
刚开始在网上搜索的,很多说是找http.conf文件,可是我找了很久,都没有找到这个配置文件。在/etc文件夹中,我找到apache2文件夹, 里面并没有httd.conf这个文件,只有如下文件。
其实apache2中并没有httd.conf这个配置文件,它是第一版本Apache的配置文件,不是第二版本Apache2的配置文件,apache2的配置文件是apache2.conf。
这个配置文件其实不是真正的配置文件,它用很多include命令将配置文件包含进来。跟c语言中的.h头文件一样,真正的细节实现文件不在头文件里。
可以简单这样理解: Apache2包含了启动文件enablede文件,enabled类型里的文件实际是evailbled类型里文件的快捷方式。
在启动Apache2时,实际通过Apache2.conf找到了include 命令enabled类型的文件,而根据enabled中的快捷方式,在evailbled类型文件夹里又找到了真正的配置文件。开始加载。
比如上面例子:启动apche2,服务器先找到了apache2.conf文件,在里面发现了sites-enable这几个字。服务器就会查找sites-enable文件夹,根据文件夹的提供的信息,在sites-evailbled文件夹中找到了真正的配置文件。
下面简单介绍文件的用处。conf、mods、sites文件都有enabled类型和availablelia后缀两种。
enabled是启动文件,里面默认放的是availble文件夹中的配置文件的软链接。avaibled中的放的文件才是真正的配置文件。
例如,现在修改网站的根目录。应该在sites-availbled中修改。
sites-avaibled中的000-default.conf是默认的配置文件,你可以在里面更改网站根目录。
ServerAdmin: webmaster@localhost
DocumentRoot: /var/www/html这里的/var/www/html可以改为自己的目录,例如改为/var/www/wordpress,在浏览器中输入ip地址就会显示这个目录的内容。
Include ports.conf 这句代码是将apache2中的的ports.conf文件包含进来,apache2中的ports.conf文件才是真正的端口配置文件,所有的端口配置,应该到apache2的ports.conf文件中配置。
IncludeOptional conf-enabled/*.conf 这句代码是将apache2中的conf-enabled中的配置文件包含进来。
IncludeOptional sites-enabled/*.conf这句代码是将apache2中的sites-enable中的配置文件包含进来。
-
ubuntu安装Apache2
2019-04-22 14:33:451.执行安装命令sudo apt-get install apache2 2.打开proxy_ajp和deflate模块sudo a2enmod deflate proxy_ajp 3.apache2相关配置 在/etc/apache2/sites-available 中创建新的配置文件 api.conf,内容如下 <... -
Debian apache2 启动(Failed to start The Apache HTTP Server.) 修改apache端口小白教程
2019-06-30 17:24:16新手使用阿里云debian9 安装apache2后 输入如下命令启动apache时报错: sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; ... -
apache2 CGI配置
2018-11-01 09:34:041.正确安装apache2。sudo apt-get install apache2。(如果是源码安装,本文不适用,请看本人相邻文章) 2.在服务的要目录下,建立一个文件夹 cgi-bin.路径为 /var/www/cgi-bin. (名字约定是cgi-bin,不能是其他... -
Ubuntu 完全卸载 Apache2
2017-11-28 15:33:501. 删除apache 代码: $ sudo apt-get --purge remove apache-common ...2.找到没有删除掉的配置文件,一并删除 代码: $ sudo find /etc -name "*apache*" |xargs rm -rf $ sudo rm -
ubuntu apache2配置
2016-05-30 17:40:442. 输入下面的命令安装apache2 sudo apt-get install apache2 当提示“您希望继续执行吗?”时 输入 Y 然后等待安装完成 3. 配置apache2 (1)进入目录 /etc/apache2 。输入下面的命令可 -
apache httpd/apache2配置文件小结
2016-09-28 12:03:43apache httpd/apache2配置文件小结 首先说明一下,apache httpd和apache2其实是一个东西,可以参考 还需要说明的是apache2.4和之前的apache2.2还是有点区别的。例如所以在配置最新的apache2.4的时候十分要注意,... -
apache2安装ssl证书
2018-11-01 09:01:10a2 指的是apache2 en 指的是enabled mod 指的是model 2.启动ssl站点 a2ensite default-ssl 脚本解读: a2 > apache2 en > enabled site > 站点 3.加入监听端口 vim /etc/apache2/ports.conf ... -
linux apache2开启错误
2018-10-30 16:25:32fj@fj-PC:/etc$ sudo systemctl status apache2 显示打印结果 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Activ... -
移植apache2 ARM版 - 交叉编译apache2
2013-11-08 15:47:31下载apache2 http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.6.tar.bz2 1. tar jxvf httpd-2.4.6.tar.bz2 2. cd httpd-2.4.6 3. ./configure --host=arm-linux --prefix=/usr/local/arm/4.4.3 --with... -
Debian卸载apache2
2014-10-14 15:32:44狠狠的xie'z #apt-get autoremove apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python -
ubuntu查看apache2错误日志
2018-02-15 19:50:43Ubuntu 16.04系统下安装Discuz出现“HTTP ERROR 500”目前无法处理此请求问题:当我们在Ubuntu 16.04系统下安装...f /var/log/apache2/error.log查看错误日志,可以看到如下错误日志:日志显示在目录/discuz/install... -
centos 7 安装 apache2
2018-01-03 22:41:23centos 7 安装apache2 -
apache2 默认端口修改
2018-11-14 09:43:591, 修改 /etc/apache2/ports.conf 将 Listen 80 改为自己需要的端口,如 Listen 7777 2,修改/etc/apache2/sites-enabled/000-default.conf 将第一行的 <VirtualHost *:80> 改为自己需要的端口 &... -
debian apache2 修改默认路径
2019-02-14 17:27:00debian apache2 修改默认路径 1.修改 /etc/apache2/sites-enable/000-default.conf 将DocumentRoot改成你的路径 2.修改 /etc/apache2/apache2.conf <Directory /var/www/> ... -
Ubuntu 下安装apache2服务器
2018-01-03 12:27:22安装sudo apt install apache2 修改端口vim /etc/apache2/apache2.confvim /etc/apache2/sites-enabled/000-default.conf 把默认的80 改成自己需要的端口 我的改成了8000。修改指定服务器主目录(静态web容器)vim /... -
centos上Apache2安装
2019-06-10 16:58:48Apache2的是作为一个CentOS的软件包,因此我们可以直接用yum命令安装它,前提是你的计算机联网了: yum install httpd 如果需要配置开机启动Apache,使用如下命令: chkconfig --levels 235 httpd on 现在启动Apache... -
ubuntu apache2 启用反向代理
2019-08-16 02:47:57一、在apache2安装目录下执行如下指令,例如目录为/etc/apache2/mods-enabled a2enmod rewrite //启用.htaccess规则,打开重写 a2enmod proxy a2enmod proxy_http //启用反向代理支持 二、关键需要加载... -
ubuntu 下 apache2重启失败
2015-09-22 09:48:37apache2: Syntax error on line 219 of /etc/apache2/apache2.conf: Syntax error on line 30 of /etc/apache2/sites-enabled/000-default.conf: </VirtualHost> without matching <VirtualHost> section ... -
Apache启动时无法加载php5apache2_2.dll解决办法
2016-10-11 12:18:15Apache启动时无法加载php5apache2_2.dll解决办法 今天在windows 2003系统中配置了apache环境但是在运行是apache日志提示无法加载php5apache2_2.dll呀,这个问题觉得很奇怪了,后来发现是编译环境的问题哦,下面... -
Ubuntu 中 Apache2 安装、配置、卸载
2018-10-15 09:08:23Ubuntu 中 Apache2 安装、配置、卸载 两种安装方法 软件包安装 源码安装 一、软件包安装 安装 命令: sudo apt-get update sudo apt-get install apache2 配置 (1)apache2 默认的几... -
Ubuntu无法重启apache2
2015-10-08 20:17:00Linux系统为Ubuntu 一、Start Apache 2 Server /...# /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start 二、 Restart Apache 2 Server /重启apache服务 # /etc/init.d/apache2 restart or $ sud -
apache2启动和停止操作
2018-02-03 15:03:04假设当前Linux用户的apahce安装目录为/usr/local/apache2,那么在命令行终端中使用以下命令启动,停止和重启apache。1. 启动apahce的命令:/usr/local/apache2/bin/apachectl start apache2. 停止apache的命令:/usr... -
apache2关闭SSLv3
2018-09-05 22:22:40centos 6: 打开SSL的配置文件 vi /etc/httpd/conf.d/ssl.conf 将所有的SSLProtocol开头的行替换为如下行 SSLProtocol All -SSLv2 -SSLv3 重新启动apache服务 ...将centos 中的httpd换为apache2即可... -
apache2.conf找不到的问题,以及如何删除apt-get install apache2的apache
2013-08-16 10:12:22原因是因为我本机有编译版的apache和apt-get install安装的apache共存,而且目前service apache2 start提示找不到apache2.conf,另外还有各种问题,所以想完全删除apt-get安装的apache2. 如果有dpkg可以直接执行,... -
a2enmod命令开启或关闭apache2模块
2019-08-14 14:47:04a2enmod命令开启或关闭apache2模块 开启某个模块使用 $ a2enmod <mod> #开启 mod_rewrite 模块使 $ a2enmod rewrite 禁用某个模块使用 $ a2dismod <mod> $ a2dismod rewrite a2ensite/a2dissite... -
apache2添加网站配置
2018-07-30 11:33:121.进入etc目录下的apache2文件夹,然后进入sites-available文件,然后把000那个文件用记事本打开,复制里面内容,新建一个文件,把内容复制到里面去。(注意命名) 2.然后进入服务器,进入apache2文件夹,进入...
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
【Python-随到随学】FLask第二周
-
MySQL Router 实现高可用、负载均衡、读写分离
-
用微服务spring cloud架构打造物联网云平台
-
2021周记07:新的一年正式开始
-
计算机网络:单播,多播
-
Java核心技术面试题.zip
-
【布道者】Linux极速入门
-
在 Linux 上构建企业级 DNS 域名解析服务
-
C语言零基础入门(详细讲解)
-
MySQL 多实例安装 及配置主从复制实验环境
-
2021年 系统架构设计师 系列课
-
微信小程序原生实现好看的日期选择插件-万年历
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
fritzing.0.9.3b.32.pc.zip
-
2021.2.28 前端题
-
SaaS产品项目实施流程
-
深究字符编码的奥秘,与乱码说再见
-
牛牛量化策略交易
-
golang 判断文件(或目录)是否存在 练习