ブログ一覧へ

【PHP】gnupgの許可なし

投稿日:2021-12-03

シェルでgpgを実行出来ますが、PHPから実行すると、「`false`」が出ました。

$gpg = new \gnupg();
$info = $gpg->import($this->field['gpg']);
dd($info);
false

nginxとして「`gpg`」を実行すると、「`/var/www/.gnupg`」にアクセス出来ないみたいです。

su nginx -s /bin/bash -c "gpg"
gpg: failed to create temporary file '/var/www/.gnupg/.#lk0x0000555c891701e0.webserver.076.ne.jp.5216': 許可がありません
gpg: keyblock リソース'/var/www/.gnupg/pubring.kbx': 許可がありません

ですから、「nginxとしてlsを実行出来るかな?」と思いましたら

su nginx -s /bin/bash -c "ls -thal ~/.gnupg"
ls: ディレクトリ '/var/www/.gnupg/S.gpg-agent.extra' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/..' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/random_seed' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/.' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/S.gpg-agent' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/S.gpg-agent.browser' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/pubring.kbx~' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/S.gpg-agent.ssh' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/.#lk0x000055cce51f19c0.webserver.076.ne.jp.15948' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/pubring.kbx' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/private-keys-v1.d' を開くことが出来ません: 許可がありません
ls: ディレクトリ '/var/www/.gnupg/trustdb.gpg' を開くことが出来ません: 許可がありません
合計 0
d????????? ? ? ? ?            ? .
-????????? ? ? ? ?            ? .#lk0x000055cce51f19c0.webserver.076.ne.jp.15948
d????????? ? ? ? ?            ? ..
s????????? ? ? ? ?            ? S.gpg-agent
s????????? ? ? ? ?            ? S.gpg-agent.browser
s????????? ? ? ? ?            ? S.gpg-agent.extra
s????????? ? ? ? ?            ? S.gpg-agent.ssh
d????????? ? ? ? ?            ? private-keys-v1.d
-????????? ? ? ? ?            ? pubring.kbx
-????????? ? ? ? ?            ? pubring.kbx~
-????????? ? ? ? ?            ? random_seed
-????????? ? ? ? ?            ? trustdb.gpg

「`chmod 700`」だけは十分だと思いますが、万が一解決しなければ、このフォルダを削除すると、nginxとして作成します。

rm -rf /var/www/.gnupg
su nginx -s /bin/bash -c "mkdir ~/.gnupg"
chmod 700 /var/www/.gnupg

もう一回nginxとしてlsコマンドを実行すると

su nginx -s /bin/bash -c "ls -thal ~/.gnupg"
合計 28K
drwx------ 3 nginx nginx 4.0K Dec  3 14:08 .
-rw------- 1 nginx nginx  600 Dec  3 14:08 random_seed
srwx------ 1 nginx nginx    0 Dec  3 14:03 S.gpg-agent
srwx------ 1 nginx nginx    0 Dec  3 14:03 S.gpg-agent.browser
srwx------ 1 nginx nginx    0 Dec  3 14:03 S.gpg-agent.extra
srwx------ 1 nginx nginx    0 Dec  3 14:03 S.gpg-agent.ssh
drwx------ 2 nginx nginx 4.0K Dec  3 14:03 private-keys-v1.d
-rw-r--r-- 1 nginx nginx 2.0K Dec  3 14:03 pubring.kbx
-rw------- 1 nginx nginx   32 Dec  3 14:03 pubring.kbx~
-rw------- 1 nginx nginx 1.2K Dec  3 14:03 trustdb.gpg
drwxr-xr-x 4 nginx nginx 4.0K Dec  3 14:03 ..

PHPでも解決されました!!

以上