好的,Laravel的新手。我用composer来下载laravel。它创建了一个像......
这样的目录结构 vendor\laravel\laravel\app
vendor\laravel\laravel\bootstrap
vendor\laravel\laravel\public
vendor\laravel\framework\....
vendor\laravel\laravel\composer.json
以及许多其他供应商和laravel目录。
我的初始composer.json文件位于根目录中。
我将vendor \ laravel \ laravel目录的内容移到了顶层,这样我的目录结构就像......
app\...
bootstrap\...
public\...
vendor\laravel\framework\...
composer.json
vendor\ many other directories...
我更新了index.php目录,以便它引用bootstrap \ autoload.php和bootstrap \ start.php目录的新位置。
我可以加载index.php,我得到Laravel图像映射表示一切正常。
所以,现在我去修改routes.php为...
Route::controller('home', 'HomeController');
并尝试加载主目录。我收到了错误......
"include(D:\dev\wamp\www\ltest3\vendor/laravel/laravel/app/controllers/BaseController.php): failed to open stream: No such file or directory"
问题是vendor \ composer \ autoload_classmap.php仍然有旧的laravel \ app控制器映射。 e.g。
return array(
'BaseController' => $vendorDir . '/laravel/laravel/app/controllers/BaseController.php',
'DatabaseSeeder' => $vendorDir . '/laravel/laravel/app/database/seeds/DatabaseSeeder.php',
'HomeController' => $vendorDir . '/laravel/laravel/app/controllers/HomeController.php',
而不是/ app / controllers /
中的新位置如果我尝试在我的根目录中的composer.json上运行composer update,经过一段时间的处理后会出错...
Failed to execute git status --porcelain --untracked-files=no
所以,不知道如何让作曲家更新自动加载类图以使用我的新目录位置。
人们通常会将vendor \ laravel \ laravel目录保留在原始位置吗?
似乎作曲家可能会再次尝试更新laravel目录,但不确定,因为我收到了错误。
这是我在根目录中的完整composer.json。这是最初在vendor \ laravel \ laravel目录中并由其他初始作曲家运行创建的那个,也许这就是问题。
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.1.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
答案 0 :(得分:0)
所有供应商文件,无论它们属于Laravel还是第三方,都应位于同一位置/供应商。这不仅仅是引导程序中映射的一个重要因素,但这对于您需要更新composer中的任何包时非常重要。你可能需要在一个微妙的环境中这样做,为什么不保持它应该是它?有原因吗?
Composer用于许多其他框架,我相信在所有框架中你都需要一个供应商目录。
答案 1 :(得分:0)
搞定了,感谢Cryode和user2094178指出我的目录结构不正确。我将讨论我遇到的几个问题,希望能帮助那些可能遇到同样问题的人。 fyi,这是在运行WAMP的Windows 7上。
我认为出现问题的地方是我尝试通过创建一个需要laravel的composer.json文件来安装Laravael。在运行composer时,它不知道我想要Laravel作为我的主项目框架,所以它只是将所有Laravel安装在供应商目录中。没有顶级应用程序,引导程序,公共等目录。
废弃此安装并使用http://geekanddummy.com/how-to-laravel-4-tutorial-part-1-installation/中指定的指示从头开始(例如,运行composer create-project laravel / laravel)。归入以下问题......
1)composer / git抱怨https问题。作曲家在每次下载时都会继续发出警告,但继续使用http下载文件。当它到达symfphony filesystem.git时,它会出现致命错误
Failed to clone git@github.com:symfony/Filesystem.git via git, https, ssh protocols, aborting
为了解决这个问题,我运行了一个输出phpinfo()的小PHP脚本。确定我的php.ini文件的位置,并删除“extension = php_openssl.dll”的注释。我已经为WAMP和Apache做过这个,但是在命令行发现PHP使用了不同的php.ini
2)在命令行使用“ssh git@github.com”测试了git和ssl。有一个无法验证的问题,权限被拒绝。添加了环境变量HOME,将其设置为..
设置HOME =%HOMEPATH%
在此之后,ssh工作并成功为github添加了一个ssh密钥。
3)删除整个项目目录并从头开始,没有看到恢复和继续的方法。下一个问题是,当检索symfony / Filesystem.git时,我得到了一个git错误“超过300秒的超时”。通过添加以下composer环境变量来解决此问题。
set COMPOSER_PROCESS_TIMEOUT=2000
4)删除整个项目并从头开始。这次全部下载都很好。我有顶级应用程序,引导程序,公共和供应商目录。加载laravel \ public \ index.php有效,我看到“你已经到达”页面。