簡體   English   中英

使用php編寫為Apache創建虛擬主機

[英]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 vhostsls -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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM