根据webman文档中的打包,我已经把项目打包到build/program.phar
但是运行这个打包后,发现并不是读取.env配置的。 我试着把.env文件放到program.phar同级目录下,依旧不行。
下面是我的.env配置:
NAME=program
DEBUG=true
LISTEN=http://192.168.10.10:8787
这是config/app.php配置
return [
'debug' => env('DEBUG',true),
'default_timezone' => 'Asia/Shanghai',
];
这是config/server.php配置
return [
'listen' => env('LISTEN','http://0.0.0.0:8787'),
'transport' => env('TRANSPORT','tcp'),
'context' => [],
'name' => env('NAME',''),
'count' => env('HTTP_PROCESS_COUNT',cpu_count() * 2),
'user' => 'root',
'group' => 'root',
'reusePort' => false,
'pid_file' => runtime_path() . '/webman.pid',
'status_file' => runtime_path() . '/webman.status',
'stdout_file' => runtime_path() . '/logs/stdout.log',
'log_file' => runtime_path() . '/logs/workerman.log',
'max_package_size' => 10*1024*1024
];
这是config/plugin/webman/console/app.php
return [
'enable' => true,
'phar_file_output_dir' => BASE_PATH . DIRECTORY_SEPARATOR . 'build',
'phar_filename' => 'program.phar',
'signature_algorithm'=> Phar::SHA256, //set the signature algorithm for a phar and apply it. The signature algorithm must be one of Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, or Phar::OPENSSL.
'private_key_file' => '', // The file path for certificate or OpenSSL private key file.
'exclude_pattern' => '#^(?!.*(config/plugin/webman/console/app.php|webman/console/src/Commands/(PharPackCommand.php|ReloadCommand.php)|LICENSE|composer.json|.github|.idea|doc|docs|.git|.setting|runtime|test|test_old|tests|Tests|vendor-bin|.md))(.*)$#',
'exclude_files' => [
'.env', 'LICENSE', 'composer.json', 'composer.lock','start.php'
]
];
以上配置执行php start.php start 都是正常读取.env配置的
打包后,只能读取到env()函数的默认值
感谢帮忙看一下
config/plugin/webman/console/app.php 的 exclude_files 里
'.env' 去掉试下呢?
谢谢哈,我来试一下。不过这不太符合我使用env的初衷,因为本地的.env是开发环境的配置。线上按理说应该有独立的生产环境的.env配置才合理
这种方式是可以读取.env的配置的。 感谢哈,我再想想怎么能把生产环境和开发环境区分开
后来什么解决的?我也遇到
改打包的方法,新建一个env的挂载的,我记得我当时好像是这么弄的,
有代码吗
晚上回家找找,现在有点忘记了,好像不太难的样子,
我记得我当时是看那个什么hybridphp还是哪个的源码,解决的,在console的命令的PharPackCommand.php文件里$phar->setStub("#!/usr/bin/env php这边,挂截一个.env的文件,加进去就可以了,
hyperf的php框架
后来把env打包到文件中了。这种方式可以,只不过线上文件要单独打包一次
我寻思 打包后线上运行,env难道不是 export aa=aa?
一点都不直观
借楼问一个问题,如果按本来的日志目录是runtime下的话; 打包后日志生成的日志会放生成在哪里?
执行phar文件后,runtime/目录会在同一路径下生成
了解,多谢。