Laravel将项目从Ubuntu Server移至Local XAMPP

时间:2018-12-05 21:17:59

标签: php laravel laravel-5 xampp

我有一个从Ubuntu服务器复制的Laravel项目,现在我正在尝试在本地计算机(Mac上为XAMPP)上运行它,我已经为此苦苦挣扎了几天,感觉就像疯了一样

当我将项目粘贴到XAMPP htdocs文件夹中时,出现此错误:

  

查看未找到[welcome]

php artisan cache:clear使该错误消失了,然后出现此错误:

  

bootstrap / cache目录必须存在且可写

然后我这样做,php artisan cache:clear给我一个新的错误:

  

类视图不存在

然后,无论我在终端机中还是在浏览器中执行任何操作,我总会收到错误消息

  

类视图不存在

然后我尝试了composer update仍然是相同的错误.....我在做什么错了?

这是一场噩梦。

13 个答案:

答案 0 :(得分:4)

我只是想在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 目录的所有权,该目录运行良好,并赋予了myproject目录相同的用户所有权

chown -R root:admin .  

然后执行以下命令

composer install
php artisan cache:clear
php artisan view:clear
php artisan route:clear

此后,我的laravel代码可以完美运行。

Class view does not exist

可能是目录的所有权问题

答案 1 :(得分:2)

上次我检查过Laravel不是在XAMPP上运行,而是在安装PHP时安装的XAMPP上运行,因此可以将项目保存在计算机上的任何位置。

基于这个事实,您只需要进行有效的PHP安装,然后仅将项目的相关文件复制到新计算机上(将项目推入{{1 }})。它不会带来缓存问题,然后您要做的就是

GitHub

然后php artisan key:generate composer install从在线获取供应商软件包

我现在的钱是用来挑选相关文件并重新安装它们 根据我自己的安装,更改计算机时,这是您必须复制的列表 enter image description here

答案 2 :(得分:2)

对我来说(在xampp上进行开发时,我将为我的所有项目做什么)-我不建议将您的东西放在htdocs文件夹中。 Laravel希望不会托管在例如(本地主机/我的项目)。因此,您应该设置一个虚拟主机以使其轻松工作(例如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

答案 3 :(得分:1)

chmod -R 777 storage/

如果您有apache2的其他用户(通常是www-data),请执行以下操作:

chown -R www-data storage/

您还可以检查它是否与内置服务器一起运行:

php artisan serve

答案 4 :(得分:1)

您可以创建.htaccess文件并将以下数据添加到.htaccess文件中

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !^public
 RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

创建.htaccess文件后,在终端中设置laravel根路径并在终端中运行以下命令

php artisan serve

答案 5 :(得分:1)

由于您的Apache已在提供服务,因此仅存在权限问题。而且由于您使用的是Mac,因此,对于Mac,Apache conf中的默认用户名和组是_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组(或者在您的App环境逻辑的某些情况下,用户也可以访问)写)到:

包含资产的所有公共目录和子目录。

sudo chgrp -R _www public
sudo chmod -R 774 public

此处指定的存储目录和子目录(仅storage/framework->全部,storage/logs->全部,storage/app-> public目录),以及引导程序/缓存目录和文件

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或Web服务器(如Nginx)具有什么权限为用户_www分配到新创建的目录或文件。默认情况下,Apache umask0002,它为目录提供0775,为新文件提供0664。如果将umask的值更改为0022,就像Nginx中的默认值一样,那么等效的权限07550644对于您的Apache组{{1} }写入具有组_www的目录。因此,您可以将_www更改为umask或将所有者更改为0002

_www

这取决于您的配置。

答案 6 :(得分:1)

我遇到了与您相同的问题,但是没有从ubuntu迁移到mac,而是从Windows迁移到linux,我陷入了一片混乱,但只有git救了我,这可能会让您有些痛苦,但是它将在将来为您节省。 这是您需要执行的步骤。

  1. 使用此命令git init --bare在Mac上创建空的存储库。
  2. 使用git clone将存储库克隆到ubuntu。
  3. 将您的laravel代码复制到您在步骤2中创建的克隆。
  4. 将文件从Ubuntu推送到MAC。
  5. 测试项目。

您将在Mac中创建的目录,它可以位于xammp的htdocs中。 我知道这可能是一项艰巨的任务,但这是值得的。

更多信息来源: git-scm Getting Git on Server

如果您需要更多帮助,我们非常乐意与您讨论。

答案 7 :(得分:1)

注意:以下内容适用于Laravel 5.x,但也适用于4.2,未经其他版本测试

为什么不使用Git? (如果您不熟悉它,请查看the official website,网络上也有大量的教程)

通常,由于某些文件/目录权限和其他不太好的东西,复制粘贴整个项目不是一个好主意。

这就是将项目从Windows移至Ubuntu Server的过程:

  • 将您的项目放在git存储库(GitHub,GitLab或任何其他版本)上,在大多数情况下,Laravel应用程序随附的.gitignore文件就足够了
  • 在新计算机上,克隆存储库
  • 做一个

    composer dump-autoload
    composer install
    
  • 要迁移数据库,请

    php artisan migrate
    

    如果您有种子,请执行此操作

    php artisan db:seed
    

然后,如果您对文件/文件夹权限有疑问,请不要 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 {} \;
    
  • 要解决引导程序/缓存和存储/权限问题,请

    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

答案 8 :(得分:0)

转到您的项目文件夹,然后从终端运行这些命令

  

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

答案 9 :(得分:0)

用户/组www-data未知时;大多数Linux发行版都使用apache

chown -R apache:apache dirname

OSX上,这是用户/组_www

chown -R _www:_www dirname

通常,将当前用户添加到组_www可能会使生活变得更轻松。

答案 10 :(得分:0)

要找出您的问题,

  1. 将您的代码放入存储库(bitbucket或github)
  2. 将存储库克隆到您的本地环境中
  3. 运行composer install
  4. 运行php artisan serve。这样一来,您就可以排除xampp问题。
  5. 在浏览器中转到localhost:8000

如果您已经将整个代码库放在本地机器上(包括供应商文件夹),则跳过步骤1和2。步骤3不会受到影响,但是您也可以跳过该步骤。

一切正常后,切换到xampp。

答案 11 :(得分:0)

首先:

'web' => [
    Zend\Expressive\Session\SessionMiddleware::class,
    Zend\Expressive\Flash\FlashMessageMiddleware::class,
    User\Service\Auth\TemplateAuthMiddleware::class,
]

然后只需配置一个虚拟主机

1。为您的应用创建本地域

编辑composer update composer dumpautoload php artisan cache:clear 文件并将所有请求从您的域重定向到hosts

127.0.0.1

2。配置虚拟主机

编辑\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf:

127.0.0.1   lara.vel

完成!在浏览器中打开您的域,您将在其中看到您的项目!


另一种方法很简单,只需运行<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>

  

如果您认为此答案有用,请投票。

答案 12 :(得分:0)

我认为如果您是从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

然后使用工匠命令清除作曲家的自动加载,缓存和配置

composer dump-autoload
php artisan cache:clear
php artisan view:clear
php artisan route:clear

如果问题仍然存在,请尝试运行项目, 您需要检查config/app.php是否包含Illuminate\View\ViewServiceProvider::class 查看服务提供商。

如果不存在,请添加