2017-09-05 15 views
1

私はPHPプロジェクトのインストーラを作ろうとしています。次のブロックを<VirtualHost *:80>に追加する必要があります。ここに私のインストーラスクリプトの一部です:PHPでLinuxファイルを開くにはどうしたらいいですか?

<?php 

$path = "/var/www/html/myProject"; 

$default_conf = shell_exec('cat /etc/apache2/sites-available/000-default.conf'); 

$new_directory = "<Directory $path/public> 
        Allow Override all 
        Require all granted 
        </Directory>"; 

$res = str_replace("</VirtualHost>","$new_directory</VirtualHost>", $default_conf); 

file_put_contents("/etc/apache2/sites-available/000-default.conf",$res); 

しかし$default_confは空です。どうして?どうすれば修正できますか?


は、コマンドライン環境

cat /etc/apache2/sites-available/000-default.conf 

でこのコマンドの結果はを期待通り(空でない)正確である000-default.confファイルの内容があることを指摘しました。

+1

あなたは 'error_reporting(E_ALL);を試しましたか。ini_set( 'display_errors'、1); '一番上に、おそらく 'Permission denied'というメッセージが表示されます。 –

+0

@NigelRen私のスクリプトの名前は 'installer.php'です。このコマンドはすでに実行しています:' sudo chmod 777 installer.php' – stack

+0

Webサーバーのユーザーに権限がないか、 cat'コマンド –

答えて

0

おそらく、シェルコマンドの実行に関する権限の問題があります。

なぜ機能を試してみませんか?file_get_contentsこれは簡単で安全でクロスプラットフォームです。

http://php.net/manual/en/function.file-get-contents.php

さらに、あなたはすべてを再確認し、デバッグを支援するためにfile_existsとis_readable を使用することができます。

+0

あなたはそうです。 'file_get_contents()'を使用してクリーナーになっているようですhttps://stackoverflow.com/a/3575012/5259594 – stack

関連する問題