2017-09-05 1 views
1

PHP 프로젝트를위한 인스톨러를 만들려고합니다. 다음 블록을 <VirtualHost *:80>에 추가해야합니다. 다음은 설치 프로그램 스크립트의 일부입니다.어떻게하면 PHP에서 리눅스 파일을 열 수 있습니까?

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

웹 서버 사용자가 할 수있는 권한이 없거나 당신의' 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

관련 문제