Centos7下apache使用的tmp目录问题

原创 2018年04月16日 10:54:51

问题描述

今天在做web开发时碰到一个很奇怪的问题,使用PHP执行了一些shell脚本,因为时间较长,所以使用了nohup来后台运行,并将输出重定向到/tmp目录下的一个临时文件来调试。
一个奇怪的问题出现了,我的命令都有正常执行,但是输出的文件就是没有出现在/tmp目录下,这是为什么?

code:

$command = 'echo Hello World > /tmp/aaa';
shell_exec($command);
ll -a /tmp:

[root@sjc tmp]# ll
total 2048
drwxrwxrwx  11 root root     240 Apr 16 02:29 .
dr-xr-xr-x. 17 root root     244 Oct  6  2017 ..
drwx------ 3 root root      60 Apr 16 01:23 systemd-private-bf21bbefdh-httpd.service-cdMgBH

这时候只需要进到这个tmp目录下,就会发现我们刚才创建的aaa文件已经在这里面了

问题解决

这时候会发现这里出现一个奇怪的目录

systemd-private-bf21bbefdh-httpd.service-cdMgBH

这里有出现httpd.service这不就是我们的Apache服务吗?进去看下内容

[root@sjc tmp]# ll -a /tmp/systemd-private-bf21bbefdh-httpd.service-cdMgBH/
total 0
drwxr-xr-x  3 root root  60 Apr 16 01:23 .
drwxrwxrwx 11 root root 240 Apr 16 02:29 ..
drwxrwxrwt  2 root root  60 Apr 16 02:14 tmp

这时候就知道了,原来系统给这个服务单独创建了一个自己的private tmp 目录,这时候只需要把这个目录也改成777,代码就能顺利执行了。

补充内容

这个是linux系统中关于private tmp的一个配置,比如查看关于apache的配置如下:

[root@sjc tmp]# cat /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意到上面的PrivateTmp=true这说明这个服务使用到tmp目录是默认会创建一个私有的文件夹来使用,如果不想要使用,只需要把这个true设置为false就可以了。

参考资料:http://blog.oddbit.com/2012/11/05/fedora-private-tmp/

计算机软件专业技术资格和水平考试备考要略(下)

◆ 高级程序员   高级程序员级上下午各2个半小时。上午试卷有15道必做题,内容包括:数据结构(如树和图的定义、存储和操作),程序语言及编译知识,操作系统理论知识(如进程、资源管理方法),软件工程基础...
  • xingjiaren
  • xingjiaren
  • 2001-04-13 17:20:00
  • 682

配置Apache

1.安装完成Apache后如何配置呢,如下图步骤 2.Apache安装成功 Apache的配置主要集中在httpd.conf文件,它位于你的安装目录,比如:我安装在 3.用编辑器打开h...
  • function__
  • function__
  • 2017-01-12 14:32:18
  • 13981

Android系统镜像文件的打包过程

在前面一篇文章中,我们分析了Android模块的编译过程。当Android系统的所有模块都编译好之后,我们就可以对编译出来的模块文件进行打包了。打包结果是获得一系列的镜像文件,例如system.img...
  • zhangyongfeiyong
  • zhangyongfeiyong
  • 2016-11-09 15:36:45
  • 396

Apache2.4配置(全)

--用户认证 --日志切割 --差异记录 --访问控制 --域名跳转 --配置静态文件缓存 --防盗链...
  • u012291157
  • u012291157
  • 2015-06-14 16:47:39
  • 18584

使用Apache打造完美限制的HTTP下载服务器

使用Apache打造完美限制的HTTP下载服务器 2010-02-09 21:56     使用Apache打造完美限制的HTTP下载服务器 话说现在建站真不容易,想好好搞一个下载站,总会被人...
  • sctq8888
  • sctq8888
  • 2012-04-25 11:03:39
  • 3547

Windows OS上安装运行Apache Kafka教程

下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka。简介本文讲述了如何在Windows OS上配置并启动Apache Kafka,这篇指...
  • u011225629
  • u011225629
  • 2017-10-13 17:19:25
  • 303

mysql占用CPU资源高的分析

http://www.cnkuai.cn/news/20092/639.htm
  • beyondhjjyt
  • beyondhjjyt
  • 2013-06-13 12:57:48
  • 458

apache 优化

apache服务器的time_wait过多 fin_wait1过多等问题2009-01-16 16:591。time_wait状态过多。     通常表现为apache服务器负载高,w命令显示l...
  • wanglha
  • wanglha
  • 2015-04-16 14:54:41
  • 361

指南:优化Apache Spark作业(第2部分)

说明:借助谷歌翻译,以个人理解进行修改原文地址:https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-pa...
  • xueyao0201
  • xueyao0201
  • 2018-03-22 23:43:29
  • 11

Centos7 系统下怎么更改apache默认网站目录

在我们在centos上搭建好了apache之后,会发现它的默认网站目录是在 /var/www/html 下面的,也就是当我们访问的时候,自动定位到 /var/www/html 下面的 文件,如一个 h...
  • baidu_30000217
  • baidu_30000217
  • 2015-12-15 16:57:39
  • 8250
收藏助手
不良信息举报
您举报文章:Centos7下apache使用的tmp目录问题
举报原因:
原因补充:

(最多只允许输入30个字)