我有一个从Ubuntu服务器复制的Laravel项目,现在我正在尝试在本地计算机(Mac上为XAMPP)上运行它,我已经为此苦苦挣扎了几天,感觉就像疯了一样
当我将项目粘贴到XAMPP htdocs文件夹中时,出现此错误:
查看未找到[welcome]
php artisan cache:clear
使该错误消失了,然后出现此错误:
bootstrap / cache目录必须存在且可写
然后我这样做,php artisan cache:clear
给我一个新的错误:
类视图不存在
然后,无论我在终端机中还是在浏览器中执行任何操作,我总会收到错误消息
类视图不存在
然后我尝试了composer update
仍然是相同的错误.....我在做什么错了?
这是一场噩梦。
答案 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
从在线获取供应商软件包
答案 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 umask
是0002
,它为目录提供0775
,为新文件提供0664
。如果将umask
的值更改为0022
,就像Nginx中的默认值一样,那么等效的权限0755
或0644
对于您的Apache组{{1} }写入具有组_www
的目录。因此,您可以将_www
更改为umask
或将所有者更改为0002
:
_www
这取决于您的配置。
答案 6 :(得分:1)
我遇到了与您相同的问题,但是没有从ubuntu迁移到mac,而是从Windows迁移到linux,我陷入了一片混乱,但只有git救了我,这可能会让您有些痛苦,但是它将在将来为您节省。 这是您需要执行的步骤。
git init --bare
在Mac上创建空的存储库。git clone
将存储库克隆到ubuntu。您将在Mac中创建的目录,它可以位于xammp的htdocs中。 我知道这可能是一项艰巨的任务,但这是值得的。
更多信息来源: git-scm Getting Git on Server
如果您需要更多帮助,我们非常乐意与您讨论。
答案 7 :(得分:1)
注意:以下内容适用于Laravel 5.x,但也适用于4.2,未经其他版本测试
为什么不使用Git? (如果您不熟悉它,请查看the official website,网络上也有大量的教程)
通常,由于某些文件/目录权限和其他不太好的东西,复制粘贴整个项目不是一个好主意。
这就是将项目从Windows移至Ubuntu Server的过程:
做一个
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)
要找出您的问题,
composer install
php artisan serve
。这样一来,您就可以排除xampp问题。localhost:8000
如果您已经将整个代码库放在本地机器上(包括供应商文件夹),则跳过步骤1和2。步骤3不会受到影响,但是您也可以跳过该步骤。
一切正常后,切换到xampp。
答案 11 :(得分:0)
'web' => [
Zend\Expressive\Session\SessionMiddleware::class,
Zend\Expressive\Flash\FlashMessageMiddleware::class,
User\Service\Auth\TemplateAuthMiddleware::class,
]
然后只需配置一个虚拟主机
编辑composer update
composer dumpautoload
php artisan cache:clear
文件并将所有请求从您的域重定向到hosts
:
127.0.0.1
编辑\ 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
查看服务提供商。
如果不存在,请添加