У меня была похожая проблема, хотя и с некоторыми дополнительными факторами.Я начну с решения: используйте абсолютные пути, а не относительные.И избегайте ~
.
Что касается моих выводов.Возьмите этот сценарий:
#!/usr/bin/php
<?php
$ssh = ssh2_connect('hostname.example.com');
$res = ssh2_auth_pubkey_file($ssh, 'user', '~/.ssh/various-keys/special-key_2015.pub', '~/.ssh/various-keys/special-key_2015');
unset($res); unset($ssh);
$ssh = ssh2_connect('hostname.example.com');
$res = ssh2_auth_pubkey_file($ssh, 'user', '~/.ssh/various-keys/special-key_2015.pub', '~/.ssh/various-keys/special-key_2015');
Приводит к ошибке аутентификации во втором ssh2_auth_pubkey_file
вызове.Немного странно встречаться после двух идентичных вызовов - но достаточно легко для анализа.
Но оставшаяся часть кода моего приложения может привести к segfault.В конце концов я сузил его до того, что он включает в себя файл, который определяет функцию, которая использует константу __FILE__
, изменяет ошибку, превращая ее в ошибку сегментации.
<?php
function nothing() {
error_log(__FILE__);
}
Надеюсь, это поможет кому-нибудь еще в какой-то момент ...