我的项目具有以下文件结构:
|- src
|-- PcMagas
|---- Dropbox.php
|---- DropBoxFactory.php
|- web
|-- index.php
随着PSR-4通过作曲家的命令,src文件夹中的所有内容都将自动加载:
"autoload": {
"psr-4":{
"": "src/"
}
}
位于src/PCMagas
中的一个类的示例是:
namespace PCMagas;
use \GuzzleHttp\Client;
use PCMagas\Exceptions\FileNotFoundException;
class DropboxFactory
{
public static function fomeFunc()
{
//Do stuff
}
}
在index.php
上,我使用这样的类:
require_once __DIR__ . '/../vendor/autoload.php';
use PCMagas\DropboxFactory;
DropboxFactory::fomeFunc();
在Homestead的主机上,我通过以下方式启动应用程序:
composer dump-autoload -o
cd ^project_root^/web
php -S localhost:8990
命令的输出为:
$ composer dump-autoload -o
No composer.json in current directory, do you want to use the one at /home/pcmagas/Kwdikas/php/apps/datawise? [Y,n]? Y
Generating optimized autoload files
对于php -S localhost:8990
是:
PHP 7.0.33-0ubuntu0.16.04.3 Development Server started at Mon Apr 22 15:46:06 2019
Listening on http://localhost:8990
Document root is /home/pcmagas/Kwdikas/php/apps/datawise/web
Press Ctrl-C to quit.
也没有任何问题。但是,当我尝试通过宅基地启动时,出现以下错误:
致命错误:未捕获的错误:在/home/vagrant/code/web/index.php中找不到类'PCMagas \ DropboxFactory'
通过:
vagrant ssh
然后:
cd ~/code
composer dump-autoload -o
像魅力一样工作,但仍然存在以下问题:
host
(在运行Homestead的vm之外)上无法自动加载而在内部的类呢?是因为./vendor
文件夹是.gitignore
d?after.sh
是否以root身份或以我的应用程序所在vagrant
中的非root用户/home/vagrant/code
身份运行?答案 0 :(得分:0)
对于问题2
,您可以通过在项目after.sh
上放置以下代码来找出用户:
echo "I am user ${USER}"
如果输出为:
,然后运行命令vagrant provision
。
我是用户流浪汉
然后after.sh
中的以下代码就可以完成工作:
cd ~/code
composer install
composer dump-autoload -o
cd
对于第一个,我仍然没有答案。