本機使用的是window環境,一切正常,但是部署到linux系統上(配的是nginx),在訪問的時候,控制器和方法都能正常執行,頁面也可以輸出,但是輸出的頁面卻缺少css檔,一查是500錯誤,已經將請求重定向到public資料夾下,
我的目錄結構是:
public/web/css/css.css
域名是:
aaa.com
直接存取aaa.com就會執行Publc/index.php(因為設定了nginx,將請求重定向到public資料夾下),也可以正常輸出頁面,但是頁面上請求的:
url:aaa.com/web/css/css.css
卻是500錯誤,百思不得其解,請大神指教.謝謝各位.
現在發現一部分問題是nginx設定問題,網路抄了個設定:
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)(/.+)$;
}
}
雖然現在可以訪問首頁了,但是現在有了另外的問題,我的項目是帶有前後台的,前台可以訪問,但是後台無法訪問,我是這樣實現前後台的,使用路由分離,我在RouteProvider.php中的map方法配置了兩個路由檔案:
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');
});
}
現在我的無法登入後台,即xxx.com/Am/Index/index會發送500錯誤,並且前台的ajax也無法執行.
專案結構目錄:
#謝謝大家的幫助,很可惜最後只能給一位大神採納.情況是這樣的,我這裡做出說明以備後來的人發生跟我一樣的情況.
如果出現跟我一樣的情況,請先檢查伺服器bootstrap/cache目錄下是否有快取檔案,有則請清空,在嘗試.確實是由於快取的存在導致的.
PHPz2017-06-05 11:10:16
謝謝你得邀請。
個人覺得linux上部署的錯誤幾點:
1.大小寫敏感。
2.laravel下的資料夾開發部分是用的軟連接。
3.index.php 在public下,靜態資源應該和public對應。
如果沒解決問題,請貼出你得專案結構目錄
PHP中文网2017-06-05 11:10:16
vim /etc/php-fpm.d/www.conf
修改用戶群組配置
user = nginx
group = nginx
將使用者群組設定為nginx
chown -R nginx:nginx /path/to/your/webroot
chmod -R 0775 bootstrap
chmod -R 0775 storage
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 "";
}
迷茫2017-06-05 11:10:16
500 錯誤很簡單 ~
500 錯誤的話, 必定會有提示
瀏覽器裡面的網頁面板不一定能抓取到結果, 你可以 在新便籤直接打開 查看提示
或 去查看一下這個目錄下面的檔案, 凡是發生錯誤都會產生一條日誌
$ cd {项目目录}/storage/logs
伊谢尔伦2017-06-05 11:10:16
謝謝大家的幫助,很可惜最後只能給一位大神採納.情況是這樣的,我這裡做出說明以備後來的人發生跟我一樣的情況.
如果出現跟我一樣的情況,請先檢查伺服器bootstrap/cache目錄下是否有快取檔案,有則請清空,在嘗試.確實是由於快取的存在導致的.