Php 如何使用composer将github项目安装到根目录?
我正在为php制作一个请求处理程序,它将请求路由到服务器上的特定文件。我有一个Php 如何使用composer将github项目安装到根目录?,php,.htaccess,composer-php,document-root,Php,.htaccess,Composer Php,Document Root,我正在为php制作一个请求处理程序,它将请求路由到服务器上的特定文件。我有一个.htaccess文件,该文件将每个请求路由到DOCUMENT\u ROOT/Server/handleRequest.php,然后该文件处理所有其他请求。为了实现这一点,我将.htaccess文件和Server文件夹复制到我的站点的根文件夹中 我已经成功地让composer将我的项目安装到供应商目录下的vendor/JakarCo/PHP请求处理程序。我希望所有文件(至少是.htaccess文件)都直接安装到站点的文
.htaccess
文件,该文件将每个请求路由到DOCUMENT\u ROOT/Server/handleRequest.php
,然后该文件处理所有其他请求。为了实现这一点,我将.htaccess
文件和Server
文件夹复制到我的站点的根文件夹中
我已经成功地让composer将我的项目安装到供应商目录下的vendor/JakarCo/PHP请求处理程序
。我希望所有文件(至少是.htaccess
文件)都直接安装到站点的文档根文件夹中(比供应商文件夹高一级)
我正在尝试使用oomphinc/composer-installers-extender
设置自定义路径,但它不起作用,我不知道如何修复它
请求处理程序中的composer.json
{
"name": "JakarCo/PHP-Request-Handler",
"description": "php request handler",
"type": "library",
"license": "proprietary",
"require": {
"php": "^5.3.6 || ^7.0",
"oomphinc/composer-installers-extender": "@dev"
},
"extra": {
"installer-types": ["library"],
"installer-paths": {
"my/path/": ["JakarCo/PHP-Request-Handler/"],
"path/to/libraries/JakarCo/": ["type:library"]
}
}
}
包含请求处理程序的项目的composer.json
是:
{
"repositories": [
{
"url": "https://github.com/JakarCo/PHP-Request-Handler",
"type": "vcs"
}
],
"require": {
"JakarCo/PHP-Request-Handler": "dev-master"
}
}
当我从站点的根文件夹运行composer update
时,它成功运行(现在无需更改)。因此,我删除了vendor文件夹和composer.lock文件,运行了composer安装
,并成功安装了三次,分别是composer/installer、oomphinc和我的。但我的仍将进入供应商/JakarCo/PHP请求处理程序
,而服务器
文件夹和.htaccess
文件需要进入站点的根文件夹
我怀疑我的问题在于安装程序路径
,但我不知道应该是怎样的。另外,我可能不应该在oomphinc版本中使用@dev
,但我不知道还能放什么
我对PHP很有经验,但不太熟悉,而且我还不熟悉使用composer和git 更新 结果很糟糕。非常糟糕的lol。请求处理程序项目中的composer.json重写了我用来包含它的composer.json文件 -- 我写了我自己的安装程序作为指导,只是复制粘贴他们所拥有的 重要提示:我正在处理的站点的composer.json需要一个指向请求处理程序的指针和一个指向请求处理程序安装程序的指针,如下所示。我试图将指向安装程序的指针放在请求处理程序项目中,但后来我看到
存储库部分仅由根编写器读取。也就是说,工作目录中的composer.json
文件,从中调用composer安装/composer更新
。或者,可以将安装程序项目添加到PackageGist,然后请求处理程序项目将能够直接需要它
我很难让安装程序开始工作。这是因为在安装程序中传递给supports()
的$packageType
是小写的,并且我指定的类型包括大写,因此return$packageType=='JakarCo request installer
变成了'return$packageType==strtolower('JakarCo-request-installer')
我遇到的另一个问题是composer告诉我,当我执行return'/'
时,“getInstallPath”返回的目录名不能为空。我改为return./
,但仍然有问题。我做了composer清除缓存
然后rm-rf供应商
然后rm composer.lock
然后重新运行composer安装
,现在它正在工作
这一切可能会更好,但现在我只需要基本的功能。稍后我将改进代码的质量。我是作曲家的新手,这一切都让我感到难以理解,我发现文档很难理解
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/JakarCo/PHP-Request-Handler"
},
{
"type": "vcs",
"url": "https://github.com/JakarCo/PHP-Request-Handler-Installer"
}
],
"require": {
"JakarCo/PHP-Request-Handler": "dev-master",
"JakarCo/PHP-Request-Handler-Installer": "dev-master"
}
}
因此,必须在站点项目中定义存储库。在请求处理程序项目中定义存储库没有任何作用,然后找不到请求处理程序安装程序,因为composer在这方面不会递归运行,除非您的项目在PackageGist上,在这种情况下,您不定义存储库。烦人,但可行 此外,请求处理程序是一个非常早期的版本,我知道还有很多地方需要改进。如果我无法让composer安装正常,那么我可以手动复制粘贴.htaccess,对其他文档使用命名空间类,并使用自动加载程序。但这是我以后更愿意做的事情。如果它应该作为项目使用,为什么要将其安装为依赖项/库?@rob006我尝试将类型设置为项目,但似乎没有任何不同。文件确实没有澄清任何事情。不过,我现在正在读更多的书。我真的不明白它是如何使用不同的类型的。