2017-05-20 18 views
0

私はUbuntu 16.04に複数の仮想ホストを設定する必要がありますが、これは手動で作成することができます。PHPを使ってホスト.configファイルを作成するには

私はphpのfopen関数を使用してファイル/ tmpまたは/ wwwディレクトリを作成しようとしました。これは私がファイルを作成することはできますが、このファイルを/ etc/apache2/sites-availableディレクトリにphp shell_exec()機能を使用します。私はshell_exec(mv temp_file path_to_move);

を使用していたが、私は/etc/apache2/sites-availableで直接ファイルを作成しようとしましたが、それは誤りCannot open file

これは私私のコードであるを示しcode.Then PHP経由で実行されないコマンド一時的に作成したファイルを移動するには

<?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

ヨ作品私はmvコマンドの後ろにスペースがないので、fclose($ myfile)の後に$ myfileの値が何であるのか分かりませんが、確かにファイル名ではありません。

あなたの現在のコードでは、これは動作するはずです:

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

あなたは、2つの場所でハードコードのファイル名を持っているが。変数としてそれを設定するとよいでしょう:

<?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

関連する問題