2017-05-20 16 views
0

수동으로 생성 할 수있는 우분투 16.04에 여러 개의 가상 호스트를 설정해야합니다.PHP를 사용하여 호스트 .config 파일을 만드는 방법

하지만 동적으로 이것을하고 싶습니다.이 파일/tmp를 만들려고했거나 php의 fopen function.So를 사용하여/www 디렉토리에서 파일을 만들 수 있지만이 파일을 이동할 수 없습니다/etc/apache2/sites-available 디렉토리에 PHP shell_exec() 함수를 사용합니다.

내가

shell_exec(mv temp_file path_to_move);을 사용했지만 내가 직접 /etc/apache2/sites-available에 파일을 만들려고 한 code.Then PHP를 통해 실행되지] 명령 일시적으로 생성 된 파일을 이동하려면하지만 오류 Cannot open file

보여줍니다이 내 코드 인 내가

<?php 
    $myfile = fopen("example.com.conf", "w"); 
    $template ='<VirtualHost *:80> 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
    </VirtualHost>'; 

    fwrite($myfile, $template); 
    fclose($myfile); 

    $cmd= 'mv'.$myfile.' /etc/apache2/sites-available'; 
    shell_exec($cmd); 
?> 

을 사용하고 그것은 파일을 만들 수 있지만, 이동 명령은하지

답변

0

요를 작동 u는 mv 명령 다음에 공백이 없으며 fclose ($ myfile) 이후에 $ myfile에 어떤 값이 있는지 확실하지 않지만 파일 이름이 아닙니다.

당신이 현재 코드와 함께이 작업을해야합니다 :

$cmd = 'mv example.com.conf /etc/apache2/sites-available'; 

당신이 두 개의 장소에서 하드 코드 된 파일 이름을 가지고 그러나. 변수로 설정하면 좋을 것이다 :

<?php 
$filename = 'example.com.conf'; 
$myfile = fopen($filename, "w"); 
$template = '<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>'; 

fwrite($myfile, $template); 
fclose($myfile); 

$cmd = 'mv ' . $filename . ' /etc/apache2/sites-available'; 
shell_exec($cmd); 
?> 

지금 Windows PC에서 그것을 쓰고,이 테스트를하지 않은, 그래서이 작동하는지 알려주세요.

+0

예 라이브 코드에서 변수가 있습니다. 여기에 대해 올바른 코드가 아닌 – CyberAbhay

+0

btw를 하드 코드했습니다. 사용 권한 문제도있을 수 있습니다. – sunomad

+0

cmd는 live.i에서도 공간이 없습니다. 라이브 코드 – CyberAbhay