php webman.phar start 异常 Uncaught ErrorException: include(build/webman.phar/config/plugin): failed to open stream: phar error: "config/plugin" is not a file in phar
isSuperAdmin(r.sub)PHP Fatal error: Uncaught ErrorException: include(phar:///var/www》tinywan.cn/build/webman.phar/config/plugin): failed to open stream: phar error: "config/plugin" is not a file in phar "/var/www/micro.webman.tinywan.cn/build/webman.phar" in phar:///var/www/tinywan.tinywan.cn/build/webman.phar/vendor/workerman/webman-framework/src/Config.php:113
3个回答
年代过于久远,无法发表回答
plugin是个目录,没法直接include吧
目前遇到的问题就是插件的使用phar打包,但是没法使用
webman更新到1.2.4看看,我刚刚看了1.2.4Config做了点修改,针对phar的
https://github.com/walkor/webman-framework/commit/38ff33ef1f8f1515cf88537246a4079092311c28
上次试了一下打包 运行不了,一堆报错
这个问题修复过,更新到 webman-framework v1.2.4 或者后续更高版本试下
升级后又是新的报错
弄个新的webman项目,试下是否正常。我这没有发现这个问题。
vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php 没打包进去?
不清楚,下午搞个新的试试
下载的新框架也是这样子
/var/www/webman # ./webman version
Webman 1.2.4
Webman-framework v1.2.4
说明一下:
config/plugin/webman/console/app.php
文件的exclude_pattern
配置项是为了让打包出来的文件相对小一些,去掉一些不需要的目录,比如Test
目录,这是一个正则表达式,如果打包出来的phar
文件有问题,请自己修改对应的正则即可,因为每个人用到的依赖库不一样,如果不怕打包的phar
文件太大,完全可以把exclude_pattern
设置为null
。另外附上一张,刚才测试的结果图。
vendor不打包,项目能运行?
vendor肯定要打包进去的,exclude_pattern的存在可以忽略那些测试文件和文档目录,只打包进去项目必要的文件,你可以把它改成null,甚至可以exclude_files配置项目设置为空数组,再次进行打包
exclude_pattern设置为null,即是不忽略整个项目的所有文件和目录,exclude_files置空表示不忽略单个文件。
也就是说exclude_pattern为null和exclude_files为空数组的时候,打包整个webman项目
新下载的框架可以用
之前的就不可以用
新下载的框架我这边测试不行,不知道怎么回事?
可以发一下config/plugin/webman/console/app.php文件的配置,包括你项目所需要的依赖库,我安装测试一下。
如果可以的话,发一下打包后的phar文件,我解包出来看看少了哪些文件
app.php
composer.json
改成这样就都可以用了
@Tinywan 我直接复制你的
composer.json
文件的依赖包,然后执行composer update
,其他配置不变,然后打包运行,都是正常的
另外补充一点,
phar
文件不允许动态修改里面的内容,如果需要上传文件或者需要生成临时文件,可以参考rumtime_path
函数,在当前目录下生成临时目录。@ fuzqing 打包后 怎么使用 命令行?
命令行还是和
webman/console
包的webman一样使用,因为打包后的
phar
文件的入口文件其实就是webman/console
包的webman
文件。mv build/webman.phar build/webman
chmod +x build/webman
build/webman version
@fuzqing 非常感谢! 完美了
你这明显composer.json配置信息不全,你看我发的
@Tinywan 你把 webman/console 的配置 修改成
就好了
@Tinywan
composer create-project workerman/webman mywebman
cd mywebman && rm composer.lock -f
// composer.json完全修改成你发的
vim composer.json
composer install
php webman phar:pack
php build/webman.phar start
结果也是一样可以的
你所说的配置信息不全,是因为我忽略掉了
dev
环境的包,还有就是webman/console
已经包含了symfony/console
,所以我就删除了composer.json文件里面的symfony/console
感谢 @fuzqing @yzh52521 。是我本地Docker环境打包的不行,在测试环境试了一把是可以的,本地Docker打包为啥不行的问题我在找一下问题