次のコマンドを使用して、コマンドラインから OpenSSL 経由で SHA1 ハッシュを生成しています。
echo -n "test" | openssl dgst -sha1 -sign private.pem | openssl enc -base64
出力は次のとおりです。
mTuk4MicnS1Xn9BB4wed6pWe62CGDgj6imaOp9f3spiRo/W88WNac7sMkAYl37ruh82mbREbEzsFwCCdhO3MpGh/tyhb+2vx59tta1GTp5Nhb8PlnFL20Zh8QUrv6WrgvsI8z4IPG4KXCJw++7hBQHcnxa8dT5EMn1OW72MumG8=
exec() を使用して PHP 経由で同じコマンドを実行すると、別の出力が得られます。
YDGDpc0nC1uaFBO28uepQ/8hMhqoUhXIhqb0UTVCHA2oqWI7PeYyHBB1tmvQ8iqo/ZJzvkNxAruy6T67rdpz/4hyKh6hRxGvYNStteqv/Cn04yiSlgidiHnN2x5aoI6GdE/c0haiE/WmJlFTOcQdPztsQWOk2QUzWdwDmO0OjqE=
なぜ?
両方のスクリプトは同じユーザーを介して実行されます。PHPスクリプトは「nobody」として実行されるため、シェルを介してnobodyとしてログインし、実行しました...違いはありません