90 lines
3.2 KiB
Markdown
90 lines
3.2 KiB
Markdown
|
|
# 🐛 FIX: Кнопка "Через Nextcloud" → Ошибка подключения к API
|
|||
|
|
|
|||
|
|
**Дата:** 2 ноября 2025
|
|||
|
|
**Проблема:** Кнопка "📚 Через Nextcloud" показывала ошибку "Ошибка подключения к API"
|
|||
|
|
|
|||
|
|
## 🔍 Диагностика
|
|||
|
|
|
|||
|
|
### Симптомы:
|
|||
|
|
1. ✅ `nextcloud_open.php` **работал в CLI** (возвращал правильный JSON)
|
|||
|
|
2. ❌ Через веб (curl/браузер) возвращал **HTTP 500 (пустой ответ)**
|
|||
|
|
3. ❌ JavaScript fetch() получал пустой ответ → показывал ошибку
|
|||
|
|
|
|||
|
|
### Причина:
|
|||
|
|
**Redis PHP extension** был установлен только для PHP 7.2, а Apache использовал **PHP 7.3**!
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# PHP CLI (работало):
|
|||
|
|
php -v # PHP 7.2 (имеет redis extension)
|
|||
|
|
|
|||
|
|
# Apache (не работало):
|
|||
|
|
phpinfo() # PHP 7.3 (НЕТ redis extension!)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ✅ Решение
|
|||
|
|
|
|||
|
|
### 1. Обнаружили модуль .so:
|
|||
|
|
```bash
|
|||
|
|
find /opt/php73 -name "redis.so"
|
|||
|
|
# /opt/php73/lib/php/extensions/no-debug-non-zts-20180731/redis.so
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Создали конфиг:
|
|||
|
|
```bash
|
|||
|
|
echo "extension=redis.so" > /opt/php73/mods-available/redis.ini
|
|||
|
|
ln -s /opt/php73/mods-available/redis.ini /opt/php73/conf.d/redis.ini
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Перезапустили Apache:
|
|||
|
|
```bash
|
|||
|
|
systemctl restart apache2
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Проверка:
|
|||
|
|
```bash
|
|||
|
|
curl https://crm.clientright.ru/crm_extensions/file_storage/api/nextcloud_open.php?recordId=395695
|
|||
|
|
|
|||
|
|
# Ответ:
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"fileId": 115163,
|
|||
|
|
"redirectUrl": "https://office.clientright.ru:8443/apps/files/files/115163?...",
|
|||
|
|
"source": "redis"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 Результат
|
|||
|
|
|
|||
|
|
✅ Кнопка "📚 Через Nextcloud" **РАБОТАЕТ**
|
|||
|
|
✅ FileID получается из **Redis** (быстро!)
|
|||
|
|
✅ Файлы открываются в **OnlyOffice через Nextcloud**
|
|||
|
|
|
|||
|
|
## 📂 Изменённые файлы
|
|||
|
|
|
|||
|
|
- `/opt/php73/mods-available/redis.ini` (создан)
|
|||
|
|
- `/opt/php73/conf.d/redis.ini` (symlink создан)
|
|||
|
|
- `nextcloud_open.php` (оптимизирован, убрана PROPFIND fallback логика)
|
|||
|
|
|
|||
|
|
## 🧪 Проверка других кнопок
|
|||
|
|
|
|||
|
|
| Кнопка | Статус | Примечание |
|
|||
|
|
|--------|--------|------------|
|
|||
|
|
| ⚡ **Быстро** | ✅ Работает | S3 → OnlyOffice Standalone |
|
|||
|
|
| 📚 **Через Nextcloud** | ✅ Работает | Redis → Nextcloud → OnlyOffice |
|
|||
|
|
| 📁 **Папка в Nextcloud** | ✅ Работает | Открывает папку проекта |
|
|||
|
|
| 📄 **Скачать** | ✅ Работает | Прямая ссылка S3 |
|
|||
|
|
|
|||
|
|
## 🔧 Для проверки в будущем:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверка модулей PHP 7.3:
|
|||
|
|
curl -s "https://crm.clientright.ru/crm_extensions/file_storage/api/test_modules.php"
|
|||
|
|
# Должно показать: {"mysqli":true,"redis":true,"json":true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Автор:** AI Assistant (Claude Sonnet 4.5)
|
|||
|
|
**Время исправления:** ~2 часа (большая часть на диагностику)
|
|||
|
|
**Сложность:** ⭐⭐⭐ (3/5) - нетривиальная проблема с разными версиями PHP
|