Laravel 将项目从 Ubuntu 服务器移动到本地 XAMPP
Laravel move project from Ubuntu Server to Local XAMPP
我有一个从我的 Ubuntu 服务器复制的 Laravel 项目,现在我正尝试 运行 它到我的本地机器(XAMPP 在 Mac) 我已经为此苦苦挣扎了几天,我觉得自己快要疯了。
当我将我的项目粘贴到 XAMPP htdocs 文件夹中时,出现此错误:
View [welcome] not found
哪个 php artisan cache:clear
让它消失了,然后我得到这个错误:
The bootstrap/cache directory must be present and writable
然后我这样做,php artisan cache:clear
这给了我一个新的错误:
Class view does not exist
然后无论我在终端或浏览器中做什么,我总是得到错误
Class view does not exist
然后我试了composer update
还是一样的错误.....我做错了什么?
这是一场噩梦。
上次我检查 Laravel 没有 运行 在 XAMPP
上,而是在安装 XAMPP
时安装的 PHP
上,所以项目可以保存在任何地方在电脑上。
考虑到这一点,您只需要激活 PHP 安装,然后只将项目的相关文件复制到新计算机上(这些文件将在您推送时获得您的项目到 GitHub
)。它没有缓存问题,之后你需要做的就是
php artisan key:generate
然后 composer install
或 composer update
从网上获取供应商包
我现在的钱是选择相关文件并重新安装它们
根据我自己在更换计算机时的安装,这是您必须复制的列表
chmod -R 777 storage/
如果您有不同的 apache2 用户(通常是 www-data),也可以:
chown -R www-data storage/
您还可以检查它是否与内置服务器一起运行:
php artisan serve
您可以创建 .htaccess 文件并将以下数据添加到 .htaccess 文件中
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/ [L]
</IfModule>
创建 .htaccess 文件后,在终端中设置 laravel 根路径,并在终端
的命令下方设置 运行
php artisan serve
由于您的 Apache 已经在运行,所以您只是遇到了权限问题。由于您使用的是 Mac,Apache conf 中的默认用户名和组是 Mac 的 _www
而不是 Ubuntu 的 www-data
。您可以在 httpd.conf
文件中看到它:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</IfModule>
现在,使用终端,进入你的项目目录,让我们说 cd /var/www/laravel-project1
并确保组 _www
(或者在你的应用程序环境逻辑的某些情况下,用户也有访问权限(读和写)到:
包含资产的所有 public 目录和子目录。
sudo chgrp -R _www public
sudo chmod -R 774 public
此处指定的存储目录和子目录(storage/framework
-> 所有,storage/logs
-> 所有,storage/app
-> public
仅目录),以及 bootstrap/cache目录和文件
sudo chgrp -R _www storage/framework storage/logs storage/app/public bootstrap/cache
sudo chmod -R 774 storage/framework storage/logs storage/app/public bootstrap/cache
这应该可以解决您访问页面的所有权限问题。
但是现在,如果在使用创建的页面、会话和日志文件时遇到其他问题,可能还有最后一个权限问题,称为 UMask
,它告诉 Apache 或 Nginx 等 Web 服务器为用户 _www
分配给新创建的目录或文件的权限。默认情况下,Apache umask
是 0002
,它为目录提供 0775
,为新文件提供 0664
。如果 umask
值被更改为 0022
就像它是 Nginx 中的默认值一样,那么等效的权限 0755
或 0644
将不足以满足您的 Apache 组 _www
写入具有组 _www
的目录。因此,您可以将 umask
更改为 0002
或将所有者更改为 _www
:
sudo chown -R _www public storage/framework storage/logs storage/app/public
所以这取决于您的配置。
我运行遇到了和你一样的问题,但不是从ubuntu移动到mac,而是从windows移动到linux,我乱七八糟的,只有git救了我,可能让你痛了点,但以后会救你的。
以下是您需要执行的步骤。
- 使用此命令
git init --bare
在 mac 上创建空存储库。
- 使用
git clone
. 将存储库克隆到 ubuntu
- 将您的 laravel 代码复制到您在第 2 步中创建的克隆。
- 将文件从 ubuntu 推送到 MAC。
- 测试项目。
您将在mac中创建的目录,它可以在xammp 的htdocs 里面。
我知道这可能是一项痛苦的任务,但这是非常值得的。
更多信息来源:
git-scm
Getting Git on Server
如果您需要更多帮助,我很乐意与您讨论。
转到您的项目文件夹从终端添加运行这些命令
sudo chmod -R 777 your_projrct/storage
sudo chmod -R 777 your_projrct/bootstrap/cache
sudo chown -R :www-data your_project
sudo chmod -R g+s your_project
然后 php artisan key:generate
和 composer install
注意:以下适用于 Laravel 5.x 但也适用于 4.2,未与其他版本一起测试
为什么不使用 Git?
(不熟悉的可以看看the official website,网上也有很多教程)
通常,复制粘贴整个项目不是一个好主意,因为某些 file/directory 权限和其他不太好的东西。
这就是我将我的项目从 Windows 移动到我的 Ubuntu 服务器的方法:
- 将您的项目放在 git 存储库(GitHub、GitLab 或其他),Laravel 提供的 .gitignore 文件=] 在大多数情况下,应用程序已经足够好了
- 在您的新机器上,克隆您的存储库
做一个
composer dump-autoload
composer install
要迁移您的数据库,请执行
php artisan migrate
如果您有播种,请执行此操作
php artisan db:seed
然后,如果您对 file/folder 权限有疑问,请不要 EVER 执行 chmod -R 777 path/
,如果您必须这样做来解决您的问题,你做错了什么。
此命令向任何人授予对 path
文件夹中所有文件和文件夹的所有权限。
对于您的情况,您必须执行以下操作:
首先,找到 apache 使用哪个用户名 运行 服务器(通常是 www-data)
ps aux | egrep '(apache|httpd)'
然后,将项目目录所有者更改为 apache 的用户(以 www-data apache 用户为例)
sudo chown -R www-data:www-data /var/htdocs/your-project/
设置文件夹权限
sudo find /var/htdocs/your-project/ -type d -exec chmod 755 {} \;
设置文件权限
sudo find /var/htdocs/your-project/ -type f -exec chmod 644 {} \;
要修复 bootstrap/cache 和存储/权限问题,请执行
sudo chown -R www-data:www-data /var/htdocs/your-project/
Laravel 5.x
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/bootstrap/cache
Laravel 4.2
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/app/bootstrap/cache
那你应该好好的吧
这样做,您可以轻松地将您的项目从一台机器转移到另一台机器,而无需为权限修复或任何事情而苦苦挣扎。
有关文件和文件夹权限命令行说明的更多信息和来源,请参阅 Laravel 5 Files Folders Permission and Ownership Setup
对我来说(在 xampp 上开发时,我为所有项目所做的工作)- 我不建议将您的东西放在 htdocs 文件夹中。 Laravel 预计不会托管在 subfodler 上,例如(localhost/my-project)。所以你应该设置一个虚拟主机以使其更容易工作(例如 my-project.test),这有点烦人。
简单的解决方案是使用 php artisan serve
命令在端口 8000 上简单地设置本地服务器。
不要忘记为 mysql 服务器启动 xampp。
已经提到了一些典型的技巧:
- 删除供应商文件夹 & 运行
composer install
(如果还没有,请安装 composer)
- 运行
composer dump-autoload
- 运行
php artisan key:generate
- 当然不要忘记迁移
php artisan migrate
- 并清除全部缓存
php artisan cache:clear
通常你不需要设置任何文件权限afaik
我刚刚试图在我的 mac 上重现您的问题。所以我安装了 XAMPP 和 PHP 版本 7.1.25,这是我本地 PHP 版本
的等效版本
所以我安装了 XAMPP 并启动了服务器。
从我的 ubuntu 服务器下载了我的 laravel 项目文件夹并将其复制到 htdocs (XAMPP)
当我尝试 运行 http://localhost/myproject/public 时,它显示异常
There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied
然后我给了存储文件夹的完全权限
chmod -R 777 storage
并更改了 myproject 文件夹中文件的所有权。
这里我刚刚检查了 dashboard 目录的所有权,它是 运行ning 完美的,并给出了 相同的用户所有权 我的项目目录。
chown -R root:admin .
然后执行以下命令
composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear
在此之后我的 laravel 代码 运行 完美无缺。
Class view does not exist
可能是目录的所有权问题
当 user/group www-data
未知时;大多数 Linux 发行版使用 apache
:
chown -R apache:apache dirname
在 OSX
上,这将是 user/group _www
:
chown -R _www:_www dirname
将当前用户添加到组 _www
总的来说可能会让生活更轻松。
隔离您的问题:
- 将您的代码放入存储库(bitbucket 或 github)
- 将存储库克隆到您的本地环境中
- 运行
composer install
- 运行
php artisan serve
。这样你就排除了 xampp 的问题。
- 在浏览器中转到
localhost:8000
如果您的本地机器上已经有了整个代码库(包括供应商文件夹),请跳过第 1 步和第 2 步。第 3 步不会有什么坏处,但您也可以跳过它。
一切正常后,切换到 xampp。
首先:
composer update
composer dumpautoload
php artisan cache:clear
然后只需配置一个虚拟主机
1。为您的应用创建本地域
编辑 hosts
文件并将所有请求从您的域重定向到 127.0.0.1
:
127.0.0.1 lara.vel
2。配置虚拟主机
编辑\xampp\apache\conf\extra\httpd-vhosts.conf:
<VirtualHost lara.vel:80>
DocumentRoot "C:\xampp\htdocs\laravel\public"
ServerAdmin laravel.dev
<Directory "C:\xampp\htdocs\laravel">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
完成!在浏览器中打开您的域,您会在那里看到您的项目!
另一种方法很简单,只需 运行 artisan serve
.
Please vote up if you found this answer useful.
我认为如果您从 Ubuntu 复制项目,那么这是一个权限问题。
首先在终端
中键入以下内容,让用户进入您的 Mac 计算机
users
然后复制你刚刚得到的用户,例如(用户名),并在这个命令中使用它
sudo chown -R username project-directory
然后检查yourproject-directory/bootstrap/cache
,如果不存在,就去创建它。否则 运行 这个命令:
sudo chmod -R guo+w project-directory/bootstrap/cache
然后
sudo chmod -R guo+w project-directory/storage
然后使用 artisan 命令清除 composer 自动加载和缓存和配置
composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear
如果问题仍然存在,现在尝试 运行 项目,
你需要检查 config/app.php
是否包含 Illuminate\View\ViewServiceProvider::class
查看服务提供商。
如果没有,请添加
我有一个从我的 Ubuntu 服务器复制的 Laravel 项目,现在我正尝试 运行 它到我的本地机器(XAMPP 在 Mac) 我已经为此苦苦挣扎了几天,我觉得自己快要疯了。
当我将我的项目粘贴到 XAMPP htdocs 文件夹中时,出现此错误:
View [welcome] not found
哪个 php artisan cache:clear
让它消失了,然后我得到这个错误:
The bootstrap/cache directory must be present and writable
然后我这样做,php artisan cache:clear
这给了我一个新的错误:
Class view does not exist
然后无论我在终端或浏览器中做什么,我总是得到错误
Class view does not exist
然后我试了composer update
还是一样的错误.....我做错了什么?
这是一场噩梦。
上次我检查 Laravel 没有 运行 在 XAMPP
上,而是在安装 XAMPP
时安装的 PHP
上,所以项目可以保存在任何地方在电脑上。
考虑到这一点,您只需要激活 PHP 安装,然后只将项目的相关文件复制到新计算机上(这些文件将在您推送时获得您的项目到 GitHub
)。它没有缓存问题,之后你需要做的就是
php artisan key:generate
然后 composer install
或 composer update
从网上获取供应商包
我现在的钱是选择相关文件并重新安装它们
根据我自己在更换计算机时的安装,这是您必须复制的列表
chmod -R 777 storage/
如果您有不同的 apache2 用户(通常是 www-data),也可以:
chown -R www-data storage/
您还可以检查它是否与内置服务器一起运行:
php artisan serve
您可以创建 .htaccess 文件并将以下数据添加到 .htaccess 文件中
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/ [L]
</IfModule>
创建 .htaccess 文件后,在终端中设置 laravel 根路径,并在终端
的命令下方设置 运行php artisan serve
由于您的 Apache 已经在运行,所以您只是遇到了权限问题。由于您使用的是 Mac,Apache conf 中的默认用户名和组是 Mac 的 _www
而不是 Ubuntu 的 www-data
。您可以在 httpd.conf
文件中看到它:
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</IfModule>
现在,使用终端,进入你的项目目录,让我们说 cd /var/www/laravel-project1
并确保组 _www
(或者在你的应用程序环境逻辑的某些情况下,用户也有访问权限(读和写)到:
包含资产的所有 public 目录和子目录。
sudo chgrp -R _www public
sudo chmod -R 774 public
此处指定的存储目录和子目录(storage/framework
-> 所有,storage/logs
-> 所有,storage/app
-> public
仅目录),以及 bootstrap/cache目录和文件
sudo chgrp -R _www storage/framework storage/logs storage/app/public bootstrap/cache
sudo chmod -R 774 storage/framework storage/logs storage/app/public bootstrap/cache
这应该可以解决您访问页面的所有权限问题。
但是现在,如果在使用创建的页面、会话和日志文件时遇到其他问题,可能还有最后一个权限问题,称为 UMask
,它告诉 Apache 或 Nginx 等 Web 服务器为用户 _www
分配给新创建的目录或文件的权限。默认情况下,Apache umask
是 0002
,它为目录提供 0775
,为新文件提供 0664
。如果 umask
值被更改为 0022
就像它是 Nginx 中的默认值一样,那么等效的权限 0755
或 0644
将不足以满足您的 Apache 组 _www
写入具有组 _www
的目录。因此,您可以将 umask
更改为 0002
或将所有者更改为 _www
:
sudo chown -R _www public storage/framework storage/logs storage/app/public
所以这取决于您的配置。
我运行遇到了和你一样的问题,但不是从ubuntu移动到mac,而是从windows移动到linux,我乱七八糟的,只有git救了我,可能让你痛了点,但以后会救你的。 以下是您需要执行的步骤。
- 使用此命令
git init --bare
在 mac 上创建空存储库。 - 使用
git clone
. 将存储库克隆到 ubuntu
- 将您的 laravel 代码复制到您在第 2 步中创建的克隆。
- 将文件从 ubuntu 推送到 MAC。
- 测试项目。
您将在mac中创建的目录,它可以在xammp 的htdocs 里面。 我知道这可能是一项痛苦的任务,但这是非常值得的。
更多信息来源: git-scm Getting Git on Server
如果您需要更多帮助,我很乐意与您讨论。
转到您的项目文件夹从终端添加运行这些命令
sudo chmod -R 777 your_projrct/storage
sudo chmod -R 777 your_projrct/bootstrap/cache
sudo chown -R :www-data your_project
sudo chmod -R g+s your_project
然后 php artisan key:generate
和 composer install
注意:以下适用于 Laravel 5.x 但也适用于 4.2,未与其他版本一起测试
为什么不使用 Git? (不熟悉的可以看看the official website,网上也有很多教程)
通常,复制粘贴整个项目不是一个好主意,因为某些 file/directory 权限和其他不太好的东西。
这就是我将我的项目从 Windows 移动到我的 Ubuntu 服务器的方法:
- 将您的项目放在 git 存储库(GitHub、GitLab 或其他),Laravel 提供的 .gitignore 文件=] 在大多数情况下,应用程序已经足够好了
- 在您的新机器上,克隆您的存储库
做一个
composer dump-autoload composer install
要迁移您的数据库,请执行
php artisan migrate
如果您有播种,请执行此操作
php artisan db:seed
然后,如果您对 file/folder 权限有疑问,请不要 EVER 执行 chmod -R 777 path/
,如果您必须这样做来解决您的问题,你做错了什么。
此命令向任何人授予对 path
文件夹中所有文件和文件夹的所有权限。
对于您的情况,您必须执行以下操作:
首先,找到 apache 使用哪个用户名 运行 服务器(通常是 www-data)
ps aux | egrep '(apache|httpd)'
然后,将项目目录所有者更改为 apache 的用户(以 www-data apache 用户为例)
sudo chown -R www-data:www-data /var/htdocs/your-project/
设置文件夹权限
sudo find /var/htdocs/your-project/ -type d -exec chmod 755 {} \;
设置文件权限
sudo find /var/htdocs/your-project/ -type f -exec chmod 644 {} \;
要修复 bootstrap/cache 和存储/权限问题,请执行
sudo chown -R www-data:www-data /var/htdocs/your-project/
Laravel 5.x
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/bootstrap/cache
Laravel 4.2
sudo chmod -R ug+rwx /var/htdocs/your-project/storage /var/htdocs/your-project/app/bootstrap/cache
那你应该好好的吧
这样做,您可以轻松地将您的项目从一台机器转移到另一台机器,而无需为权限修复或任何事情而苦苦挣扎。
有关文件和文件夹权限命令行说明的更多信息和来源,请参阅 Laravel 5 Files Folders Permission and Ownership Setup
对我来说(在 xampp 上开发时,我为所有项目所做的工作)- 我不建议将您的东西放在 htdocs 文件夹中。 Laravel 预计不会托管在 subfodler 上,例如(localhost/my-project)。所以你应该设置一个虚拟主机以使其更容易工作(例如 my-project.test),这有点烦人。
简单的解决方案是使用 php artisan serve
命令在端口 8000 上简单地设置本地服务器。
不要忘记为 mysql 服务器启动 xampp。
已经提到了一些典型的技巧:
- 删除供应商文件夹 & 运行
composer install
(如果还没有,请安装 composer) - 运行
composer dump-autoload
- 运行
php artisan key:generate
- 当然不要忘记迁移
php artisan migrate
- 并清除全部缓存
php artisan cache:clear
通常你不需要设置任何文件权限afaik
我刚刚试图在我的 mac 上重现您的问题。所以我安装了 XAMPP 和 PHP 版本 7.1.25,这是我本地 PHP 版本
的等效版本所以我安装了 XAMPP 并启动了服务器。
从我的 ubuntu 服务器下载了我的 laravel 项目文件夹并将其复制到 htdocs (XAMPP)
当我尝试 运行 http://localhost/myproject/public 时,它显示异常
There is no existing directory at "/Applications/XAMPP/xamppfiles/htdocs/myproject/storage/logs" and its not buildable: Permission denied
然后我给了存储文件夹的完全权限
chmod -R 777 storage
并更改了 myproject 文件夹中文件的所有权。
这里我刚刚检查了 dashboard 目录的所有权,它是 运行ning 完美的,并给出了 相同的用户所有权 我的项目目录。
chown -R root:admin .
然后执行以下命令
composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear
在此之后我的 laravel 代码 运行 完美无缺。
Class view does not exist
可能是目录的所有权问题
当 user/group www-data
未知时;大多数 Linux 发行版使用 apache
:
chown -R apache:apache dirname
在 OSX
上,这将是 user/group _www
:
chown -R _www:_www dirname
将当前用户添加到组 _www
总的来说可能会让生活更轻松。
隔离您的问题:
- 将您的代码放入存储库(bitbucket 或 github)
- 将存储库克隆到您的本地环境中
- 运行
composer install
- 运行
php artisan serve
。这样你就排除了 xampp 的问题。 - 在浏览器中转到
localhost:8000
如果您的本地机器上已经有了整个代码库(包括供应商文件夹),请跳过第 1 步和第 2 步。第 3 步不会有什么坏处,但您也可以跳过它。
一切正常后,切换到 xampp。
首先:
composer update
composer dumpautoload
php artisan cache:clear
然后只需配置一个虚拟主机
1。为您的应用创建本地域
编辑 hosts
文件并将所有请求从您的域重定向到 127.0.0.1
:
127.0.0.1 lara.vel
2。配置虚拟主机
编辑\xampp\apache\conf\extra\httpd-vhosts.conf:
<VirtualHost lara.vel:80>
DocumentRoot "C:\xampp\htdocs\laravel\public"
ServerAdmin laravel.dev
<Directory "C:\xampp\htdocs\laravel">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
完成!在浏览器中打开您的域,您会在那里看到您的项目!
另一种方法很简单,只需 运行 artisan serve
.
Please vote up if you found this answer useful.
我认为如果您从 Ubuntu 复制项目,那么这是一个权限问题。
首先在终端
中键入以下内容,让用户进入您的 Mac 计算机users
然后复制你刚刚得到的用户,例如(用户名),并在这个命令中使用它
sudo chown -R username project-directory
然后检查yourproject-directory/bootstrap/cache
,如果不存在,就去创建它。否则 运行 这个命令:
sudo chmod -R guo+w project-directory/bootstrap/cache
然后
sudo chmod -R guo+w project-directory/storage
然后使用 artisan 命令清除 composer 自动加载和缓存和配置
composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear
如果问题仍然存在,现在尝试 运行 项目,
你需要检查 config/app.php
是否包含 Illuminate\View\ViewServiceProvider::class
查看服务提供商。
如果没有,请添加