[英]Use php to write to create virtual host for apache
我試圖編寫一個腳本來創建虛擬主機vor apache(AWS上的CentOS 6.4),我嘗試通過簡單的寫操作:
$result = file_put_contents( '/etc/httpd/conf/vhosts/test.conf', 'teststring');
var_dump($result);
這是我的許可和所有者信息:
-rw-r--r--. 1 apache apache 34445 Jan 16 11:08 httpd.conf
-rw-r--r--. 1 apache apache 13139 Aug 13 17:30 magic
drwxrwxrwx. 2 apache apache 4096 Jan 17 04:29 vhosts
但是我仍然得到這個消息:
Warning: file_put_contents(/etc/httpd/conf/vhosts/test.conf): failed to open stream: Permission denied in /var/www/server-control/src/test.php on line 8 bool(false)
通過ps aux|grep httpd
檢查用戶:
root 9804 0.0 0.0 246372 8712 ? Ss 03:57 0:00 /usr/sbin/httpd
apache 9808 0.0 0.0 247024 7972 ? S 03:57 0:00 /usr/sbin/httpd
apache 9809 0.0 0.0 248304 8644 ? S 03:57 0:00 /usr/sbin/httpd
apache 9810 0.0 0.0 247536 7872 ? S 03:57 0:00 /usr/sbin/httpd
apache 9811 0.0 0.0 247536 8020 ? S 03:57 0:00 /usr/sbin/httpd
apache 9812 0.0 0.0 247536 7876 ? S 03:57 0:00 /usr/sbin/httpd
apache 9813 0.0 0.0 247536 7948 ? S 03:57 0:00 /usr/sbin/httpd
請幫忙!! 我可以通過將所有者更改為apache
來寫入該文件夾,但是不是。
我已經解決了這個問題。 運行ls -laZ
,這是不同的:
我的本地人:
[root@localhost conf]# ls -laZ
drwxr-xr-x apache apache ? .
drwxr-xr-x apache apache ? ..
-rw-r--r-- apache apache ? httpd.conf
-rw-r--r-- apache apache ? magic
-rw-r--r-- apache apache ? ssl.crt
-rw-r--r-- apache apache ? ssl.key
drwxrwxrwx apache apache ? vhosts
EC2服務器:
[root@ip-172-31-0-37 conf]# ls -laZ
drwxr-xr-x. apache apache system_u:object_r:httpd_config_t:s0 .
drwxr-xr-x. apache apache system_u:object_r:httpd_config_t:s0 ..
-rw-r--r--. apache apache system_u:object_r:httpd_config_t:s0 httpd.conf
-rw-r--r--. apache apache system_u:object_r:httpd_config_t:s0 magic
drwxrwxrwx. apache apache unconfined_u:object_r:httpd_config_t:s0 vhosts
這意味着EC2 Server在SELinux permission context
為了解決問題,我再次運行chcon -R --type=httpd_sys_content_t vhosts
和ls -laZ
:
[root@ip-172-31-0-37 conf]# ls -laZ
drwxr-xr-x. apache apache system_u:object_r:httpd_config_t:s0 .
drwxr-xr-x. apache apache system_u:object_r:httpd_config_t:s0 ..
-rw-r--r--. apache apache system_u:object_r:httpd_config_t:s0 httpd.conf
-rw-r--r--. apache apache system_u:object_r:httpd_config_t:s0 magic
drwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 vhosts
區別在於vhosts目錄上的httpd_sys_content_t
上下文
現在,Apache可以寫入/etc/httpd/conf/vhosts
如果我做錯了/理解錯了,請糾正我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.