Sesi php 7.4 tidak berfungsi

Saya memiliki Ubuntu 20. 04 server dengan PHP 7. 4. 3 (Apache2. 4. 41 + mod_php) berjalan, semuanya harus di AFAIK defaultnya. Tetapi sesi PHP tampaknya tidak berfungsi. Saat menjalankan kode berikut, setiap penyegaran halaman web mengarah ke keluaran yang sama (bukan bertambah) dan ke file sesi baru di /var/lib/php/sessions

?php
session_start();
$_SESSION['test'] += 1;
var_dump($_SESSION['test']);

Saya memeriksanya dengan browser yang berbeda (untuk mengecualikan kemungkinan browser saya menolak cookie sesi) dan sistem operasi, masalahnya konsisten. Saya menjalankan kode yang sama pada CentOS lama dengan PHP 5. 3 - tidak ada masalah di sana. Penghitung meningkat setelah setiap penyegaran browser, terlepas dari browser, dan sesi diperbarui dengan setiap permintaan alih-alih dibuat ulang. Saya tidak tahu mengapa masalah ini akan terjadi

Hak untuk /var/lib/php/sessions_ pada mesin Ubuntu adalah 1733

Saat menyegarkan skrip, jumlahnya mulai meningkat, yang mengonfirmasi sesi PHP berfungsi dengan baik di server

Sedangkan untuk Codeigniter, kita perlu memeriksa pengaturan sesi di file application/config/config. php

1

2

3

4

5

6

7

$config['sess_driver'] = 'files';

$config['sess_cookie_name'] = 'ci_session';

$config['sess_expiration'] = 7200;

$config['sess_save_path'] = FCPATH.'ci_sessions';

$config['sess_match_ip'] = FALSE;

$config['sess_time_to_update'] = 300;

$config['sess_regenerate_destroy'] = FALSE;

Itu terlihat bagus. Sesi akan disimpan dalam folder

1

FCPATH. 'ci_sessions';

FCPATH akan diganti dengan folder root aplikasi web tempat index. php hadir. Saya memverifikasi folder ci_session ada dan mengubah izinnya menjadi 777, tetapi itu tidak memperbaiki masalah sesi

Untuk memverifikasi sesi berfungsi, saya menambahkan 2 fungsi ke pengontrol

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

fungsi publik setel - sesi()

{

    $data baru = array(

        'nama pengguna'   = > 'johndoe',

        'email'     = > '[email protected]',

        'logged_in' = > BENAR

    );

    $ini - >session->set_userdata($newdata);

    mati("tes");

}

 

publik fungsi baca - sesi()

{

    $ini - >load->library('session');

    $nama = $this->session->userdata();

    gema ";

    var_dump($nama);

    var_dump($_SESSION);

    keluar;

}

Saya dapat memanggil fungsi-fungsi ini untuk memverifikasi apakah sesi diatur dengan benar dengan url seperti domain Anda/nama-pengontrol/nama-fungsi

Masalahnya adalah karena PHP 7. Untuk memperbaikinya, edit file

1

sistem / perpustakaan / Sesi/Session.php

Menemukan

1

sesi_ini('. name', $params['cookie_name']);

Ubah dengan

1

sesi_ini('. id', $params['cookie_name']);

Anda dapat menemukan lebih banyak tentang sesi Codeigniter di https. // codeigniter. com/userguide3/libraries/sessions. html

Bagaimana Anda mengaktifkan sesi di PHP?

Mulai Sesi PHP . Variabel sesi diatur dengan variabel global PHP. $_SESSION. session_start() function. Session variables are set with the PHP global variable: $_SESSION.

Apa yang bisa saya gunakan selain sesi di PHP?

Alternatif untuk sesi adalah cookie (pada kenyataannya, sesi biasanya diimplementasikan menggunakan cookie). Tetapi cookie hanya boleh digunakan jika Anda ingin menyimpan data dalam jumlah kecil.

Apa fungsi PHP session_start () dan session_destroy ()?

session_destroy() menghancurkan semua data yang terkait dengan sesi saat ini . Itu tidak menghapus variabel global apa pun yang terkait dengan sesi, atau menghapus cookie sesi. Untuk menggunakan variabel sesi lagi, session_start() harus dipanggil. Catatan. Anda tidak perlu memanggil session_destroy() dari kode biasa.
Anda juga dapat masuk tanpa Cookie hanya dengan Id Sesi dan Waktu, tetapi Anda harus menulis keduanya langsung di Database Anda setelah Berhasil Masuk . saya ada di index. php sesuatu seperti ini yang akan selalu menghasilkan id sesi baru berdasarkan waktu dan id sesi lama jika kondisinya tidak diverifikasi. jika ($_SESSION['id']. =