Skip to content

Menyelesaikan masalah

Penyelesaian kepada masalah biasa dan teknik nyahpepijat untuk XOOPS CMS.


Sebelum menyelami isu khusus, semak punca biasa berikut:

  1. Kebenaran Fail - Direktori memerlukan 755, fail memerlukan 644
  2. PHP Versi - Pastikan PHP 7.4+ (8.x disyorkan)
  3. Log Ralat - Semak log ralat xoops_data/logs/ dan PHP
  4. Cache - Kosongkan cache dalam Admin → Sistem → Penyelenggaraan

  • Skrin Putih Kematian (WSOD)
  • Ralat Sambungan Pangkalan Data
  • Kebenaran Ditolak Ralat
  • Kegagalan Pemasangan Modul
  • Ralat Penyusunan Templat
  • Pemasangan FAQ
  • Modul FAQ
  • Tema FAQ
  • Prestasi FAQ
  • Mendayakan Mod Nyahpepijat
  • Menggunakan Ray Debugger
  • Penyahpepijatan Pertanyaan Pangkalan Data
  • Penyahpepijatan Templat Smarty

Simptom: Halaman putih kosong, tiada mesej ralat

Penyelesaian:

  1. Dayakan paparan ralat PHP buat sementara waktu:
// Add to mainfile.php temporarily
error_reporting(E_ALL);
ini_set('display_errors', 1);
  1. Semak PHP log ralat:
Terminal window
tail -f /var/log/php/error.log
  1. Punca biasa:

    • Had memori melebihi
    • Fatal PHP ralat sintaks
    • Tiada sambungan yang diperlukan
  2. Selesaikan masalah ingatan:

// In mainfile.php or php.ini
ini_set('memory_limit', '256M');

Simptom: “Tidak dapat menyambung ke pangkalan data” atau yang serupa

Penyelesaian:

  1. Sahkan kelayakan dalam mainfile.php:
define('XOOPS_DB_HOST', 'localhost');
define('XOOPS_DB_USER', 'your_username');
define('XOOPS_DB_PASS', 'your_password');
define('XOOPS_DB_NAME', 'your_database');
  1. Uji sambungan secara manual:
<?php
$conn = new mysqli('localhost', 'user', 'pass', 'database');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
  1. Semak perkhidmatan MySQL:
Terminal window
sudo systemctl status mysql
sudo systemctl restart mysql
  1. Sahkan kebenaran pengguna:
GRANT ALL PRIVILEGES ON xoops.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

Simptom: Tidak boleh memuat naik fail, tidak boleh menyimpan tetapan

Penyelesaian:

  1. Tetapkan kebenaran yang betul:
Terminal window
# Directories
find /path/to/xoops -type d -exec chmod 755 {} \;
# Files
find /path/to/xoops -type f -exec chmod 644 {} \;
# Writable directories
chmod -R 777 xoops_data/
chmod -R 777 uploads/
  1. Tetapkan pemilikan yang betul:
Terminal window
chown -R www-data:www-data /path/to/xoops
  1. Semak SELinux (CentOS/RHEL):
Terminal window
# Check status
sestatus
# Allow httpd to write
setsebool -P httpd_unified 1

Simptom: Modul tidak dapat dipasang, SQL ralat

Penyelesaian:

  1. Semak keperluan modul:

    • PHP keserasian versi
    • Diperlukan PHP sambungan
    • XOOPS keserasian versi
  2. Pemasangan SQL manual:

Terminal window
mysql -u user -p database < modules/mymodule/sql/mysql.sql
  1. Kosongkan cache modul:
// In xoops_data/caches/
rm -rf xoops_cache/*
rm -rf smarty_cache/*
rm -rf smarty_compile/*
  1. Semak xoops_version.php syntax:
Terminal window
php -l modules/mymodule/xoops_version.php

Simptom: Ralat pintar, templat tidak ditemui

Penyelesaian:

  1. Kosongkan cache Smarty:
Terminal window
rm -rf xoops_data/caches/smarty_cache/*
rm -rf xoops_data/caches/smarty_compile/*
  1. Semak sintaks templat:
{* Correct *}
{$variable}
{* Incorrect - missing $ *}
{variable}
  1. Sahkan templat wujud:
Terminal window
ls modules/mymodule/templates/
  1. Jana semula templat:
    • Pentadbir → Sistem → Penyelenggaraan → Templat → Menjana semula

// In mainfile.php
define('XOOPS_DEBUG_LEVEL', 2);
// Levels:
// 0 = Off
// 1 = PHP debug
// 2 = PHP + SQL debug
// 3 = PHP + SQL + Smarty templates

Ray ialah alat penyahpepijatan yang sangat baik untuk PHP:

// Install via Composer
composer require spatie/ray --dev
// Usage in your code
ray($variable);
ray($object)->expand();
ray()->measure();
// Database queries
ray($sql)->label('Query');
{* Enable in template *}
{debug}
{* Or in PHP *}
$xoopsTpl->debugging = true;
// Enable query logging
$GLOBALS['xoopsDB']->setLogger(new XoopsLogger());
// Get all queries
$queries = $GLOBALS['xoopsLogger']->queries;
foreach ($queries as $query) {
echo $query['sql'] . " - " . $query['time'] . "s\n";
}

S: Wizard pemasangan menunjukkan halaman kosong J: Semak PHP log ralat, pastikan PHP mempunyai memori yang mencukupi, sahkan kebenaran fail.

S: Tidak boleh menulis ke fail utama.php during installation A: Tetapkan kebenaran: chmod 666 mainfile.php semasa pemasangan, kemudian chmod 444 selepas itu.

S: Jadual pangkalan data tidak dibuat J: Semak pengguna MySQL mempunyai CREATE TABLE keistimewaan, sahkan pangkalan data wujud.

S: Halaman pentadbir modul kosong J: Kosongkan cache, semak modul admin/menu.php untuk ralat sintaks.

S: Blok modul tidak dipaparkan J: Semak kebenaran blok dalam Pentadbir → Sekat, sahkan blok diberikan kepada halaman.

S: Kemas kini modul gagal J: Sandaran pangkalan data, cuba kemas kini manual SQL, semak keperluan versi.

S: Tema tidak digunakan dengan betul J: Kosongkan cache Smarty, semak theme.html wujud, sahkan kebenaran tema.

S: Tersuai CSS tidak dimuatkan J: Semak laluan fail, kosongkan cache penyemak imbas, sahkan sintaks CSS.

S: Imej tidak dipaparkan J: Semak laluan imej, sahkan kebenaran folder muat naik.

S: Tapak sangat perlahan A: Dayakan caching, optimumkan pangkalan data, semak pertanyaan lambat, dayakan OpCache.

S: Penggunaan memori yang tinggi J: Tingkatkan had_memori, optimumkan pertanyaan besar, laksanakan penomboran.---

clear_cache.sh
#!/bin/bash
rm -rf xoops_data/caches/xoops_cache/*
rm -rf xoops_data/caches/smarty_cache/*
rm -rf xoops_data/caches/smarty_compile/*
echo "Cache cleared!"
-- Optimize all tables
OPTIMIZE TABLE xoops_config;
OPTIMIZE TABLE xoops_users;
OPTIMIZE TABLE xoops_session;
-- Repeat for other tables
-- Or optimize all at once
mysqlcheck -o -u user -p database
Terminal window
# Compare against fresh install
diff -r /path/to/xoops /path/to/fresh-xoops

  • Bermula
  • Amalan Terbaik Keselamatan
  • XOOPS 4.0 Pelan Hala Tuju


#XOOPS #penyelesaian masalah #penyahpepijat #faq #ralat #penyelesaian