-
-
Notifications
You must be signed in to change notification settings - Fork 227
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor version bugs and TODO list | 重构版已知 Bug 和待完成任务 #32
Comments
libmcrypt 这个先放一放,,这个和PHP 版本有关系。php8 就不要支持了 |
大佬666。我先熟悉一下。 |
目前我知道的问题有:
|
|
怒我直言就PHP来说支不支持 macOS 根本无关紧要,如果是调试环境 MACOS自身就有PHP环境,如果是生产环境,我不信谁服务器装MACOS,PHP任然得靠LINUX 发挥最大性能 windows 都逐渐淘汰 |
@TNT-ma 这可不是这么说,MacOS的用户群体还是很大的,直接在Mac上使用的话更是方便,而且 |
@TNT-ma 静态 PHP 最大的作用是可以让开发项目的人把 PHP 嵌入到项目内发行,这样一来,写一些 CLI 工具你可以使用 PHP 进行编写,使用 static-php-cli 中的 php 或 micro,集成到项目内。正因如此,不可能每个项目都一定只会在 Linux 平台运行。 |
今天(2023-04-21)刚收获的经验: cmake 默认链接 动态库,指定静态链接库缺不生效,解决办法 例子: 比如 libssh2 链接openssl 默认就是链接到动态库。我指定了
cmake find_package 默认 找的都是动态库 find_package(OpenSSL)
find_package(NGHTTP2 REQUIRED)
find_package(LibSSH2) 找静态库,通常设置如下 -DCMAKE_POLICY_DEFAULT_CMP0074=NEW \
-DOpenSSL_ROOT={$openssl_prefix} \
我为什么把这个发到这里:请看这里 swoole-cli衍生分支图 build_native_php |
C++ 链接库,我试着解决 之前 有解决过这个 swoole/swoole-cli#56 |
C++ 链接确实是这样的,目前链接 C++ 库没有什么问题,但我似乎遇到了一些与 C++ 库有关的其他奇怪问题,与 |
这是扩展依赖库 关系图图 ;昨天(2023-04-21)我刚做完的 |
我试着把 GD 依赖库 给补全了 依赖: 'libjpeg', 'freetype', 'libwebp', 'libpng', 'libgif' |
这个可以慢慢一个一个来,分好模块和计划。我发现这个工程必须得划分多个不同的阶段来实施,否则每次修改和补充新功能都灾难性地添加一堆文件会增加维护难度和编写难度。 |
event 和 gd 啥时候能尽快搞起来啊。等着用生产环境呢 |
@TNT-ma 我最近工作太忙了,等周六放假后我抓紧弄好这些个 PR 和 Bug 就弄一下。 |
可以增加oci、pdo_oci和sqlserver的扩展库吗 |
建议增加ssh2跟ffi扩展 |
@xywf221 ssh2 应该可以,ffi 理论上只能给 macOS 版本加入了,因为 Linux 的纯 static link 的二进制即使编译了 ffi 也没有用处。 |
@xywf221 你参照这里 ,https://github.com/jingjingxyk/swoole-cli/blob/f915eb555eae30276d7e415e7d4dc34775cd8946/conf.d/curl.php#L156 把 源码静态编译的代码 搬运到本项目,执行构建就行了。 得益于本项目大佬的静态编译指导,同时借助 jingjingxyk/swoole-cli 项目构建的依赖库,我在 build_native_php 分支下 能编译 包含libssh2 扩展 PHP 运行时。可以先试试能不能用 附件(需要解包两次): 一个是包含swow 的; 一个是包含swoole 的; php-cli-v8.2.4-linux-x64-ssh2-swow.tar.xz.zip php-cli-v8.2.4-linux-x64-ssh2-swoole.tar.xz.zip 临时找了个空间: 放这里了: https://github.com/jingjingxyk/swoole-cli/releases/tag/build-native-php-v0.0.5 |
我看你一直搞那个 swoole分支,可有方法让 sfx 加载指定或固定路径的.so文件 |
我有点看不懂现在重构后的逻辑了,麻烦大佬有空加上ssh2扩展 @jingjingxyk 原版的ssh2扩展不支持协程我fork的版本是支持协程的 |
static-php-cli 把多个静态库放在一个目录,链接时 可以少写很多目录 大佬已经加好了依赖库: https://github.com/crazywhalecc/static-php-cli/blob/refactor/src/SPC/builder/unix/library/libssh2.php 照着这里 https://github.com/crazywhalecc/static-php-cli/tree/refactor/src/SPC/builder/extension 加上一个配置文件ssh2.php 就可以了 |
贡献指南我觉得可以提上日程了,就是写清楚怎么添加扩展。 不过想起来上面还有那么一坨 TODO,再加上还得写一份中文一份英文的就头疼。(我还打算写一个命令做辅助开发的: 但我最近工作忙得不可开交,可能这些事情都要放一段时间了。 |
多谢按照你这个成功编译了,这里顺便贴下 我修改后的 ssh2 repo <?php
use Swow\Coroutine;
use Swow\Sync\WaitReference;
$wr1 = new WaitReference();
Coroutine::run(static function () use($wr1): void {
$wr = new WaitReference();
echo "start connect\r\n";
$session = ssh2_connect("127.0.0.1", 22);
echo "connect done!\r\n";
Coroutine::run(static function () use ($session, $wr): void {
echo "start auth\r\n";
$flag = ssh2_auth_password($session, 'root', 'x');
echo "auth done\r\n";
Coroutine::run(static function () use ($session,$wr): void {
// exec command
echo "Exec Command : sleep 5 && echo 'done 1!' \r\n";
ssh2_exec($session, "sleep 5 && echo 'done 1!'");
echo "Exec Command : sleep 5 && echo 'done 2!' \r\n";
ssh2_exec($session, "sleep 5 && echo 'done 2!'");
});
});
echo "auth 挂起\r\n";
WaitReference::wait($wr);
var_dump('done');
});
echo "connect 挂起\r\n";
WaitReference::wait($wr1);
echo "整体结束\r\n"; 测试输出
|
@jingjingxyk @xywf221 @TNT-ma 有关议题建议新开 Issue 或 PR 讨论。 |
Would you consider adding FreeBSD support? I can open a new issue for this and possibly assist if it would be welcomed. |
@kdkd FreeBSD is not difficult to support in theory, because it uses almost the same tool chain as Linux. But there is no guarantee that all dependent libraries will work properly, and it will take time to port it. I can try it out in my spare time if I need to, but I'll probably only be able to try it in a FreeBSD virtual machine. (Better than Windows support) |
Bugs
pcntl_fork()
not supported by this platform). Fixed via c93a4e8/usr/lib/libc++.dylib
.‘strlcpy’ was not declared in this scope; did you mean ‘strncpy’?
build:libs
command has no--enable-zts
optionTODO List
brew
.fetch
command #45apt
,yum
,pacman
, etc.deploy
deploy self command needs a extension checker for self-required extensions like tokenizer, mbstring.The text was updated successfully, but these errors were encountered: