php - laravel digunakan untuk linux, menentukan folder awam sebagai direktori akar tapak web, tetapi subfoldernya tidak boleh diakses
PHP中文网
PHP中文网 2017-06-05 11:08:16
0
8
2037

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中文网

认证高级PHP讲师

membalas semua(8)
PHPzhong

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

Ty80

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

黄舟

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

洪涛

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 "";
    }
迷茫

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
巴扎黑

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

世界只因有你

Sebaik-baiknya menyiarkan ralat yang dikembalikan oleh rangka kerja

伊谢尔伦

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan