2016-11-30 2 views
1

우리에게 전송되고 있지만 작동시키지 못하는 파일의 암호를 해독하려면 gnupg_decrypt을 사용해야합니다.PHP의 GnuPG keyinfo 함수가 비어있는 배열을 보여줍니다.

gnupg_keyinfo을 사용하여 모든 공개 키를 나열하면 빈 배열이 반환됩니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?

내가 사용하고있는 코드는 다음과 같습니다

$res = gnupg_init(); 
$info = gnupg_keyinfo($res, ''); 
print_r($info); 

가 모든 키를 나열해야 패턴으로 ''을 넣어 위의 링크의 의견을 찾고.

여기 http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html

를 제공하는 정보를 사용하여 내 서버에 공개 키를 설정 한 내가 GPG --list-키를 실행할 때 성공적으로 생성되는로 보여줍니다.

나는 당신이 일을하지만, 해당 폴더의 키에 대한 참조가 없기 위해서는 페이지 상단에

putenv('GNUPGHOME=/tmp'); 

을 넣어야 할 어딘가에 읽고 난 찾을 수 없습니다 위와 함께 설정할 위치.

또한 키가 저장된 폴더에 대한 권한이 없을 수도 있지만 다시 위치가 확실하지 않습니다.

아무도 도와 드릴 수 있습니까?

감사합니다


그 후 다음 gnupg_import 기능을 사용하여 키를 다시 가져온 chmod 600 ~/.gnupg/* chmod 700 ~/.gnupg

chown -R {{user}} ~/.gnupg 다음 내가 한이 작업을 얻으려면

+0

'ls -al ~/.gnupg /'. 웹 서버에서 디렉토리 및 파일에 액세스 할 수 있는지 확인하십시오. 명령 행에서 스크립트를 시험해 보는 것이 좋습니다. 이는 사용 권한 문제인지 판단하는 데 도움이됩니다. 'php -r '과 같은 것 print_r (gnupg_keyinfo (gnupg_init(),' '));' ' – bishop

+0

안녕하세요 주교님, 답장을 보내 주셔서 감사합니다. 내가 커맨드 라인에서 스크립트를 실행하고 그것은 내가 사용 권한 문제 (법에 감사드립니다) 밖으로 규칙을 추측 했어. ls -al ~/.gnupg /에서 반환되는 스크린 샷을 게시했습니다. 나 한테 괜찮아 보이는 군, 너 한테 그런가? r과 w는 읽기 및 쓰기가 정확합니까? –

+0

사실, 명령 행에서 * 성공하고 * 웹 서버에서 * 실패 *한다는 것은 허가 문제이기 때문입니다. 스크린 샷은 이러한 파일이 루트가 소유하고 있으며 웹 서버가 루트로 실행되지 않는다고 표시합니다. 이 파일의 소유권을 웹 서버의 소유권으로 변경해야합니다. 'chown -R apache ~/.gnupg'와 같은 것입니다. 웹 서버 사용자에게'ps aux | egrep '(아파치 | httpd)''. – bishop

답변

1

GnuPG는이 사용자 별 열쇠 고리. 웹 서버가 루트 사용자로 실행되지 않는 경우 (을 즉시으로 변경) 웹 서버의 사용자를 분석하고이 사용자 계정 (종종 www-data 또는 유사한 것으로 불리는)에서 비밀 키를 가져와야합니다. 또한 su로). 또는 import the key through a PHP script.