Artisan要求我在Laravel根目录中?

ddrv8njm  于 2023-02-05  发布在  其他
关注(0)|答案(3)|浏览(168)

在我看来,只有当我在Laravel(4.1)项目的根目录中时,我才能执行artisan,而且在我看来(从查看源代码来看),这是设计好的,而不是我在安装过程中犯了一些错误的副产品。
例如,我将artisan复制到我的~/bin中,但是当然它到处都使用__DIR__,所以它抱怨说它找不到像~/bin/bootstrap/autoload.php这样的东西。
这是正确的吗?我必须总是去项目根目录才能执行artisan命令吗?或者我错过了什么?

dz6r00yl

dz6r00yl1#

您必须从项目根目录运行Artisman,但是您可以在任何您喜欢的位置运行。
您可以执行以下操作:

#/tmp> php /var/www/project/artisan migrate

但不是

#/var/www/project/artisan> php /bin/artisan migrate

如果你有两个项目,它怎么知道应该从哪个项目运行呢?
我开发了这个小应用程序:https://github.com/antonioribeiro/artisan-anywhere
这对你有帮助。你可以在项目文件夹的任何地方使用artisan。所以你可以:

#/var/www/project/artisan/public/assets/css> artisan migrate
i86rm4rw

i86rm4rw2#

你不能在Laravel应用程序之外调用Artisan,因为它依赖于他的一些文件来运行。

第一种溶液:创建别名

您可以简单地在.bashrc文件中添加别名,例如alias artisan='php /project_folder/artisan'

第二种溶液:创建符号链接

$ chmod +x /project_folder/artisan(使其可执行)
$ sudo ln -s /project_folder/artisan /usr/bin/artisan
然后键入artisan

w41d8nur

w41d8nur3#

更好的解决方案

您可以使用**artisan-root**,我编写的一个小型php实用程序,它将在每个项目中自动定位artisan文件,而不是为每个项目的artisan文件创建别名或符号链接(如果绝对路径被更改,这可能会失败)。
此外,还有一个仅bash的变体,它做同样的事情,但仅在Linux上。

工作原理

artisan-root实用程序是一个PHP脚本,它通过在当前工作目录或其父目录中递归地定位artisan文件来工作。这意味着它将向上查找一个目录,要么找到artisan文件,要么到项目目录之外,在这种情况下,它将停止并显示一条错误消息。

这是Git或Composer等其他软件(需要一个小的额外配置)使用的相当标准的行为。

相关问题