PHP-FPM open_basedir is project + /tmp, so file_exists('/usr/bin/ldid')
aborts the channel build after the row is created.
Co-authored-by: Cursor <cursoragent@cursor.com>
- sign() uses config('coruna.ldid_path') instead of shell_exec('which ldid')
- LDID_PATH configurable via .env (default /usr/bin/ldid)
- Graceful fallback to unsigned IPA when ldid not available