2012-06-08 2 views
2

텍스트 파일 쓰기 작업이 포함 된 PHP 스크립트가 있습니다. 이제는 브라우저에서 스크립트를 실행하면 URL을 사용하여 액세스하여 제대로 작동하고 파일이 완벽하게 작성됩니다. 그러나 터미널에서 동일한 스크립트를 실행할 때 명령을 사용하면 스크립트가 실행되지만 파일 작업이 수행되지 않습니다. 나는 이것이 확실하지 않다. 왜 그런 일이 일어나는가. 어리석은 일이 있거나 키나 다른 것을 놓치고 있지만 지금은 알아낼 수 없다는 것을 알고 있습니다. 도움을터미널에서 파일 쓰기가 작동하지 않지만 브라우저에서 작동합니다.

$myFile = "filename.txt"; 
$fh = fopen($myFile, 'a+') or die("can't open file"); 
$str = "file content here"; 
fwrite($fh, $str); 
fclose($fh); 

감사 : 여기

다음은 텍스트 파일에 기록하는 코드는 내가
/path/to/php -f /path/to/file 

을 사용하고있는 명령입니다.

+2

파일의 코드를보고 싶습니다. 그것을 보지 않고도 추측하기 어렵습니다. – deb0rian

+0

ok .. 파일 쓰기 코드와 함께 질문을 편집했습니다. 아주 간단합니다. –

답변

3

http://www.example.com/filename.ext에서 경로를 사용하십시오. 예를 들어, 터미널에서 실행하면 명령을 실행할 때 디렉토리에있는 "filename.txt"를 찾고, 브라우저에서 실행하면 PHP 파일과 동일한 디렉토리에서 찾을 것입니다.

수정하려면 액세스하려는 파일의 파일 이름이 아닌 전체 경로를 사용하십시오.

+0

예 .. 그게 문제였습니다. @vinay가 먼저 저를 지적했지만, 쉽게 이해할 수있는 답변을 제외하고 있습니다. –

1

이것은 아마도 권한 문제 일 수 있습니다. 브라우저에서 스크립트를 실행하면 스크립트는 웹 서버의 자격 증명으로 실행됩니다.

파일/디렉토리에 대한 올바른 권한을 설정하거나 웹 서버 사용자로 스크립트를 실행하십시오. 경로에 대한

+0

파일에 대한 권한은 0777입니다. 따라서 권한이 문제가 될 수 있다고 생각하지 않습니다. –

1

점검, 다른 경로를 사용 할 수있다 /var/www/example.com/filename.ext 대신

0

일란코가 맞습니다. 이것은 아마도 허가 문제에서 비롯된 것입니다. Unix에서이 문제를 해결하는 한 가지 방법은 다음과 같습니다.

1. 먼저이 파일의 소유권을 명령 줄 사용자에게 부여하고 그룹을 웹 서버에 설정합니다. 예를 들어, 서버가 아파치의 경우, 다음 명령을 실행

chown your_username:www-data filename 

www-data는 아파치 웹 서버의 기본 그룹입니다. 이 명령은 루트로 실행해야합니다.

2. 그런 다음 그룹에이 파일에 대한 쓰기 권한을 부여하십시오.

chmod g+w filename 
관련 문제