Rumah  >  Soal Jawab  >  teks badan

php - laravel digunakan untuk linux, menentukan folder awam sebagai direktori akar tapak web, tetapi subfoldernya tidak boleh diakses

Mesin ini menggunakan persekitaran tetingkap, semuanya normal, tetapi apabila digunakan ke sistem Linux (dengan nginx), apabila diakses, pengawal dan kaedah boleh dilaksanakan secara normal, dan halaman juga boleh menjadi output, tetapi halaman output hilang . fail css, saya menyemak dan mendapati ralat 500 telah dialihkan ke folder awam
Struktur direktori saya ialah:

public/web/css/css.css

Nama domain ialah:

aaa.com 

Mengakses secara langsung aaa.com akan melaksanakan Public/index.php (kerana nginx disediakan untuk mengubah hala permintaan ke folder awam), dan halaman juga boleh dikeluarkan seperti biasa, tetapi halaman diminta:

url:aaa.com/web/css/css.css

Tetapi ia adalah 500 kesilapan. Saya tidak dapat memahaminya


Sekarang saya mendapati bahawa sebahagian daripada masalah ialah masalah konfigurasi nginx, saya menyalin tetapan dalam talian:

server {
        listen       80;
        server_name  xxx;

        access_log  xxx  main;

        root       xxx;
        #root       xxx;
        index      index.php index.html index.htm;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            #fastcgi_split_path_info ^(.+\.php)(/.+)$;
        }

   }

Walaupun anda boleh mengakses halaman utama sekarang, terdapat satu lagi masalah sekarang Projek saya mempunyai bahagian hadapan dan bahagian belakang boleh diakses, tetapi bahagian belakang tidak boleh diakses . Saya menggunakan RouteProvider Kaedah peta dalam .php mengkonfigurasi dua fail penghalaan:

    public function map(Router $router) {
        //加载前台路由文件
        $router->group([
            'namespace' => 'App\Http\WebControllers',
//             'prefix' => 'Web',//引入前缀
            //'middleware' => 'some_common_middleware',
                ], function ($router) {
            require app_path('Http/routes/routes.php');
        });
        //加载后台路由文件
        $router->group([
            'namespace' => 'App\Http\AdminControllers',
            'middleware' => 'App\Http\Middleware\LoginMenuMiddleware',
            'prefix' => 'Am',//引入前缀
                ], function ($router) {
            require app_path('Http/routes/admin_routes.php');
        });
    }
    
    

Sekarang saya tidak boleh log masuk ke bahagian belakang, iaitu, xxx.com/Am/Index/index akan menghantar ralat 500, dan ajax di bahagian hadapan tidak boleh dilaksanakan.


Direktori struktur projek:


Terima kasih kepada semua atas bantuan anda Sayangnya ia hanya boleh diguna pakai oleh tuhan yang hebat pada akhirnya Jika situasi yang sama seperti saya berlaku, sila Periksa dahulu sama ada terdapat fail cache dalam direktori bootstrap/cache pelayan Jika ada, sila kosongkan dan cuba lagi Ia memang disebabkan oleh kewujudan cache
PHP中文网PHP中文网2716 hari yang lalu1993

membalas semua(8)saya akan balas

  • PHPz

    PHPz2017-06-05 11:10:16

    Terima kasih atas jemputan.

    Secara peribadi fikir terdapat beberapa kesilapan dalam penggunaan di Linux:

    1.

    2. Bahagian pembangunan folder di bawah laravel menggunakan pautan lembut.

    3.index.php Di bawah awam, sumber statik harus sepadan dengan awam.

    Jika masalah tidak diselesaikan, sila siarkan direktori struktur projek anda

    balas
    0
  • PHP中文网

    PHP中文网2017-06-05 11:10:16

    Terima kasih atas jemputan!

    Anda hanya boleh mengecualikan mereka satu persatu seperti ini

    1. Selesaikan masalah cache fail

    2. Masalah kebenaran direktori, ubah suai kebenaran direktori kepada 755

    balas
    0
  • 黄舟

    黄舟2017-06-05 11:10:16

    500 ialah ralat pelayan dalaman, yang bermaksud terdapat ralat dalam kod anda, bukan 404, Tidak dijumpai

    balas
    0
  • PHP中文网

    PHP中文网2017-06-05 11:10:16

    Pengguna dan kumpulan mesti ditetapkan dalam konfigurasi php-fpm

    vim /etc/php-fpm.d/www.conf

    Ubah suai konfigurasi kumpulan pengguna

    user = nginx
    group = nginx

    Tetapkan kumpulan pengguna kepada nginx

    chown -R nginx:nginx /path/to/your/webroot

    Direktori laravel berikut memerlukan kebenaran menulis

    chmod -R 0775 bootstrap
    chmod -R 0775 storage

    Konfigurasi vhost untuk laravel adalah seperti berikut:

        root /www/path/to/public/;
        location / {
            index index.php;
            if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/ last;
                break;
            }
        }
    
        # 解析PHP
        location ~ .+\.php($|/) {
            set $script $uri;
            set $path_info "/";
            if ($uri ~ "^(.+\.php)(/.+)") {
                set $script    ;
                set $path_info    ;
            }
    
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php?IF_REWRITE=1;
            include fastcgi_params;
            fastcgi_param PATH_INFO $path_info;
            fastcgi_param SCRIPT_FILENAME $document_root/$script;
            fastcgi_param SCRIPT_NAME $script;
            fastcgi_param HTTP_PROXY "";
        }

    balas
    0
  • 迷茫

    迷茫2017-06-05 11:10:16

    500 Ralatnya sangat mudah ~

    500 Jika ada kesilapan, pasti akan ada gesaan

    Panel rangkaian dalam penyemak imbas mungkin tidak dapat menangkap keputusan Anda boleh membukanya terus dalam nota baharu untuk melihat petua

    .

    Atau semak fail di bawah direktori ini Setiap kali ralat berlaku, log akan dijana

    .
    $ cd {项目目录}/storage/logs

    balas
    0
  • 巴扎黑

    巴扎黑2017-06-05 11:10:16

    tulis semula tidak berfungsi. . Anda mesti terlebih dahulu menentukan sama ada fail itu wujud sebelum menulis semula

    balas
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:10:16

    Sebaik-baiknya menyiarkan ralat yang dikembalikan oleh rangka kerja

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-05 11:10:16

    Terima kasih kepada semua atas bantuan anda Sayangnya ia hanya boleh diguna pakai oleh tuhan yang hebat pada akhirnya Jika situasi yang sama seperti saya berlaku, sila Periksa dahulu sama ada terdapat fail cache dalam direktori bootstrap/cache pelayan Jika ada, sila kosongkan dan cuba lagi Ia memang disebabkan oleh kewujudan cache

    balas
    0
  • Batalbalas