From fa3458e952d9dd33a17a655a53a8335d6ddaf06a Mon Sep 17 00:00:00 2001 From: Michele Locati Date: Tue, 10 Jun 2025 10:05:50 +0200 Subject: [PATCH 1/2] Let Get-PhpExtensionDetail return the absolute path of DLLs --- .../private/bin/Inspect-PhpExtension-x64.exe | Bin 21293 -> 42723 bytes .../private/bin/Inspect-PhpExtension-x86.exe | Bin 15036 -> 38269 bytes src/Inspect-PhpExtension.c | 11 +++++++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/PhpManager/private/bin/Inspect-PhpExtension-x64.exe b/PhpManager/private/bin/Inspect-PhpExtension-x64.exe index c906e3ad49194b923f2230249674cc552c9f823e..d080992624329b4a6134053a86d3fd79b1f7f298 100644 GIT binary patch literal 42723 zcmeIb4R}=5)jxVBnF$FboS+E?6&Y*LM1dxV%4pCTG6QE|fnd z?aR059B*GfcUeW9v8J|qX>G}JV`)iMRkhQ&xXf7Vsxnqo8LhX@F)puOQZ^waWoV{` zy3odPOV%c-vEOmr%?R~zSH%sBi@TJoLgY7ik~yv`4KNi?h%yStsdQ7SfgpP4K4PpDN3nt5b2;~|{XK-8a^ zD>hH4QOmJDZbW7R9#2#u1kGHIc|yHf?h&HtB|KE_VLVZPtlZ+dI!bC7h95tLe)!kG z75gVtsQ4JKyHI8*9-=eq5BU5O@^70Lvt8E%!`R zAq1&hY|2luHhzqiOZ#skBK zbsXoOtaIL->lfTRvOp`hl_-*j14&>jKgP@nr9z&d>uj7%io_-IuL&9Djc11GoYM%z z@!q;%FzDVwog2=tEk{IZqPdgX?cK#c(W=Zvir`Cep+ULf0;H=gm52D@u6Lr|1eCH$ z4Kk}}^ZKdg#Yih}2EQhQ(s`iV;WM=V9d!HBI~Yjm1duq<@C=I@o**DvGmR+!IeKQ5 z66JZNkb3lOGWym4?3`tuW$wHM^XCYS$DX3r{99811m9d#6F)d5yeLRh23Td@h8}n~ zfvIJJq#v6@#iY^6$P=WR#N6W!Y3v{TVABY})XsY{QEsaYO>YUlCx~*Nz`uO0;Ptx> z3(|G+S~PTAN^lS8c+UkWC?%kao)UyQ3?KiEV^W}HCnC{%T*Zfej7L>L;(*DSY|Hg; zLoS!QE7&Dx4kxNpri{R{l71oRz;G8+VPA^)9at{L$s?A5=jWg&fae=8fN0o<}Qyb12S0Ay6ofdbWuHo#@EWEWd@EPR8)9o4& zxHuxuD7R*qRtI@~Xruy-SfwEtM(4w{5=4OkF|g zaeK?>@eWaujZnNc?`MLz6NB*SCe&GfC&V%LkRT<0EFUbU-qq*?@r2w@VbS^#`jPgr zT|}!bg1b#8??bx9^x>L!?C#@Iuh9Q9s*2?gnV1> zapnE*gF&%H?kU1dVe^gj(>GL@$)&veTrk*7bBO5&O@F=5@<9kE|Mds?^0UANk>wxv z^PByr_p`dq>fby;{5+aJ6bDYD;GW`#(&C&skl>E{Nvglu&agOtjv3#E6by1OUDgtl zP^=jhf?Wt)goc;Ni66R#CiK2qOI2< z7RZ9nwqFo!8wKgEjp}TW47;H_gI#uUzaY&+;TBmO37N2Ml5CsM=Hxr?YSa2)2DVgS z%K*LC5xo+klHqz#3@Sz2fZ%>`fOApy<&o@*VzYVAP>io2*#=mhK7{%tvwq4gzu%=> zaUo(<{j2+k^i<_zjAp37mXo~)-~eBTdSzEU6IcAqF8TKXIVI^vme!~ z9D~+j`~i}|oqd-TVV%`5vCeKsGVAQClppCVS~O>bI?E!F&LYb2fHADIlwC+=bBRof zsAYeqMhgo=oeU7Gi1R5by#cm(na?X?S222+i1lp!p@@x+WWN%d&3pbzT=1o*Mv6Qd zD$)lb?Nfy`F_K*yo9(OwnFE@P5xL*2B=)L;qAe|>Q3PYksXgV@nA*LF1SEzSNTZ(^ zVIZQK5Q>FaqrBBlWN|p&~=2)NE~fE)=Y91 zRs}vIMa3twSgNhhf=+XsUG#6$GkH|=B}2g$;afZxrD+8q+6)`Ho{DcmSnhvVG~3zXwq=53(W4hZhNTk#B#Ibepd6o?bsd~p+M3U=xbRAhli?ms3prIH{FKfS^&vs^-`RrAhg;qWr2ASKGz^~hj;u0pB zVY>@0m8Lag+=IO!pb7i}Vicr%6HoG~_hsPc-c)si_3$E=JHiT)_NC87UAuVV zBtK$RW)>Lb>Om#EtV~pfLYr}Oyq~>AxCm%W~uCWfC`ES(Qnw{@>pcbPvNI| z@P5mEY@tv({?Xr4={?1IlF~oan(;S#6Harep3*!7k zooL(L3bFQQnU1;+2;u>GBiZv_zg^tHd%i`s;H&%_Ctx#S7mqvQ$7chlU9=f39oV|! zPwvGIejOjh+MO>^4!p$u9zoZU#2II=Q=>7V|SA?7{Ub#jt5)9NeqyAQwVH2VtA zxetHqoa`Qmvux2LbBh^2R^A386i0l@=8X&oZ9(T|PPU8oM7uaUHJJV|5JH5r+=dM( zp|guvJWrwv5Qc@JO@lIOE_iTU`58tonBMm?^(W<3I9>VA3f1w)vk!TqO(eNVT z0(NHEF#iXJtbQE7!&YZnrD1GaJru)kmGbqp*Y|#hYSPR^?=IIU%!#6vMls&^8yXvMA>Qyb;#LWK z_dBtlEreMjKse68T@cvAI#Z3Jz&UdT@$kU`ZT_&HsIn%AXGsB~Kk+)E>-Xn?+jOe- zLuDzttd)14O?1`pn@6A{cCp*uxSROl>9+Giw~*aB!>5PfqPHCS$~w0QNR-PW_4(JL zs-kYWH?}TqK0|elRQE9T(3etqFUan&4IrD7pM<3mqF+N-kaThoCYnAWO#8?*c}m4} zv<4XFA%WBvtv3rXIm>DBw~uXRC`GEw`AhBcPO|II*Si6R^VAcqTu8It1ihv@_*V_*waN9t!#> z=zg4nkPg3d;!5)rFr>kmJ;i{y%bMH06|;krZ!QG6%-v%Ivx)F*mJ#gQ0{paQ8}C#p zn=+bkdL+X62;uw>di&%vYNZcU6=A$n2=;3HoPyR--iz`p^QSyUH8xH8C4j2~jg!pE zEw_dme+^M;d=twEb_E)n`={zLi>?9@%Dwn$p7I34SBCJEUs2Gz3PGTv;gMHpsGI`O zz+;6hmJ#eyu0@#q4_c!Rt)y!MTP0LVZa|_k6a^#vS92NiQIvZOgRZ7A#u+GWe>jcx z=fo^fGU*H`eiIo?Dk4A3mq!+pFXhpvG5OP|bxcGf9y0VUe96EA7ryRB?R>TsErCEUTisU=lrss_OhEMGA?L48u@D zd>0ED5DjGmdUp}*mu(r~o9aXrK{wbYz<$dUVFTBY+CKIhBJ%8uM3Lc5M3A%=jAUxC!*C0tq!88SVSlFBkrGVbK$Q+P%TGi5D^AF;Dsw`q z1^)1sTz{j9JmSu{Q*F8a^2Ylz;0u2owsLu+3GVqMn4xNWfp>^25&75Z^RHRbuu|$W z_}A5L;Fz#tSfqcGr@NHOpb@bbXrZKNY=S(Bx4N z-;uY@q+SdpuDldZKRvW49LD91H-emtX-y-Y18G8HRIFJL_sUu59XN7OD4mMFweqh` z1#OGsK-*L}s-3NF8MNse1mCK*tUwahpe(`kt#fl|i6lcto`l9Bj)!3aN1=y3kGToY zs;ipF*(Hd(%Ps5xBhdi~q`eP%DgPPrfQF9QOU-#8$dTP**ZD2{YlR8;F{feS@L9PG z=UeWhASCTEFsUm`lXv2k!_?vsTWb^JvAr_wt-UnNE3_DDCS-5Jn2jV^iD7gelm31c ziN4CMWJXtLK7l`pDtR*T2majD1Xe&DU#)*np#G2duLCj^>Yv&(LF?HrwP)Sh@MA&i z%<4B^WrSLSf%Y?jdW?}5F!FL#ZzA$^zW#vU2I^0@#_M6&25No6irXSjX5`p;TURI} zf=}zu&gD!MM20K6{s7kfP)kLXS`Cw z^jOdbe&B!teY^=G9wko)U4;^AWt(OPn{%Bt(be=u1}*zAS6!?-G0}Ffg=zGwSN|xEN*|ABj{qGaXpP^D_nM!lvXn zB;%Y+M3k9wQSvEWDA!M;txIfy5Pj-)OtV_d4j=Z>4jhB!h&>LmJ-6E~zEvQ?X{N~k zngJwLsiu#3Uk7N#Ub*Q_KxtaCN#-}KMzCXAGCCUc9$&q{?%ojxZp_X6UaRdwZLfdz z&5%Zi7_j?R8FV3i)u!X$n2AlvNjVj@1=Gi_fcv;Eutm!kPi{2=xqJ#r4~_W>G1bNS z$!m_Fr)CHYJK(b1-Igu)PfOB^(~^1b{lJ5U5Qe@F)u$~{RDIVGWe$poA1OBiMEIqx zUlyr86>FG7Z1V>BCJ_XfKHz;MQBr=gsbke-Z?Geub=S8b$b0^Q3@k?@by#28(Vto9 z&q3LYCI!>?u0Y`W@O;c3=+6h4`N>Y3H;B5fPNFnFIW!)qr}j6V=*`#qJ4fv=TQJ2B zlzNb?tp{rD2>s#uZBVMHFVbr1?M4f(&sc-Jm--#}Gss5^!N3c#_5d>{VZ9nkm(cv& zCzResRvFD_-U@Hh0dIHxCGxae~nAmR395>$Ko2|3BKQ%&;P31T1hq`+|wkGY*Z_*F7yIXX2_nCOt7k1xm z@j~`)c`+IQdvSD5)h(yn$V_skGK7Te8bTI$+0x%;c8&_CVj?4zj4cnwh(-zR+r{01 zCRM&-d=c*Z(!Rr}^B(LxFf(UoV7KWk5=y6~*~QPGMS13MI6&Uv>>UmtjvTZdCd?Ds z_#Kda)0v#x!F0$&Jjp{uzH_h)F!^=>o961ctBoXd0@{;DARF?kxM?X*U;$!OVi!s{Q%>h6atUCm=ME$z+j~DC_Bs7K zu=&ddvKQd>xED~GgY{|kg~%F96{e7HmiLUpueYCHPc9vYuhjVZ{CV@{sr=zL580Z7 zWE|@a5!@Y^d!01(c4Ca&U&88dKvkm8xv$*)fRS^)EB2i}F7~wyjLB~G>2EW&yIzNh z$aZ`V@e}zt>IGhOpW*lo-5`-S<~!?wrc}({^BPL-lsua z|BeI+L*jiIVK5x*4yyn^_NXx`ga&3U%2A2&MC9*i7u$rCF#U{6yyrTkS$)&uwh^bT zqTd3Bojz*KZe?4ki;#=^2kR#Sik;bASb74()$yQf2{bW53T(s^AV*Qq?J$1uEs^(r zNeKFR4=ugAJ~2NvoKK`N{>6hd=u+30%GW3ylYb47{wWR^l(&HzR-HH}Mt`#UZOD)5 zys{02n?V-|wQ?mQ%%2_7x4$HO4-!7o$Ek{hR-wgj$RQCl0`~7nXv#QvCJw>O+AE7a1SOW-_(SP zlQ}b1+9RwYp9TrN~+}M2EW0k)X^q zqJ2mXX|)JHy@yucsgju8<~=0doxIusmXSJeCg2zj38>6BeFMf4D`9K8u8A^xR$mr2 zh@J!cqH@+8u}XI*5;L9m2)-g+`;hT=(}#5v1YqUgz?SW#T!R`&a~+GSw))~QLK=^# z99U?+vKOGU$e&N%{016ra4yc$Zq|)c{>kJ&w2oh;ws}q9VQ3qsb)arUKhx6|U6(@l zk7&NaS}+UZx4fqalZ+PE_8~@Q$!Ykl;{K?W!#jXRh$exo##vaoE}?3^xxC7La}@u( zz<=K=UZK)oEnAkBmzQIAVih~>r3Wl6XU14g z%PnW)EMk`}yVJrPZ_Z51zo{6T8JaG&z`U`X4xl7-Dhj*4kfx2p*{XAm)zoPf-{lJi zi0lP%rmi)MG>Wi`a){lkyIh_`>TOmcYJvaav{bRv{fRM!Z{x+ef1c)P0HoQ^eCOw9M(s;4#x$=X0-y-Mvsy{K!v2J3aWmskJYbq z7l8M~;g_h!rpJ-Fh#ek+>SEHZ#iUWq6k0|hfwU~sw??`0gi7_Ih?eC&WE)xB1K+K> z7pmT3@~^2-m$|)22Sv1h%#;5*nKU0l)@(n7F+Y`W>Owv`u#jo!lX5XMc$9|Lfk8je z(BslnZm4IrX0mM(T~PU2BeqZ@>M9n6JRd?#+zDJ5jer9`!3XGf`eoj4_dTh)Kzqnu z4)dGo|FEbW?V#n4L<)f{yPH=Z@B1>{sG4vsh+R$%9~9qh-z_c+sVmDSpGf#AC%u6?R5hu`or_1*Mw z-L+9F-Un78t@aoSTYQT$gR9d+`W@?lT!n1+w?S7Rv`tY@YGFW=op}1FxSuI(U5|1v zB!%f~mFrfqJXzf)gTVeBiM*$sQGYBB4e{&Aqd>e9-#~!eG-UiYo>i^?UZhbKFLk(o zhu-x7UDOTQ#A8@LE$(ArrsgAf_sd|=g1M@Ld+P`p6~3|{voWl^AltH!(KtQCZ1&M$ z3e#-FK;BEn9^3~Ys}UiM>52*<3@UHqGK zGX?lMb=~}H-AP^Bz7JyC*D7|k4A54_`w@&${xxUjWbp(ftN{`4S&Rx$n#nmQkaJG; zzFh^=qrCA5IpSoLfMP6f{4#h8T|~%n4-Dtm4FDDFrFw&)>%Q;Xt;11BJ6GO&G`pqc zlQ?@1&dOW)rjfveGFy3+U>QQsQJmG|^a`yC;&(Q&%_g>j(IoK}_hDmTT%`YY)0ve+ z(YQl=8zVW??yJzjPO~(TKb!Zwff*z2b$`Oc`ETmtJ$KU#qD|ZC1XY2;!qej_1r)(% z_n9QBy~6Kqxxt#WH}G#JKaDdJ8$g$GmJPWX+i~=daC>{8QGhGAn|izUA`EhFf0%62 z6SIf`zUewRFU%9H(3^s9nXaA7v23Rm6gDZp;YQG7>GwDA-p?p>+Rp*--WO58;_fx$ zRsup~(z7j3R{-)gljc8c0r#$j@|%>9pN#HYiFG2*X=I&(IiOW|R?XLTndD@7Xz-h<7Q2;GIf%iOx1oxS7 z&K5K!n@}+Dfi@pde&r=LoNA7=N~Nh_E$08~3nJr%J9@fy8wax!cd-1>HulIFmNCtLY9{{xljOOErxOl#$DZD~AAcG6a| z$(?(~7va;wZ(gx7X{l=EB2+tYa{aIYmc(Ai13Tl097 zS1w0Rc(hI^gdsKT6F3qz)`fBpa;>`3WC$enPT=2shnT+#Mnto^qto66pbcokaUiz< zd9&u(P<{p7MEd%p{kTL{RY)71{kgm3DaQs^e4AX zz`Rt(P}L-7$zbj-z)FA#a2DFeh!8 zm9mVK1fYR`K=~Y{(X>L>{%HiD188UEd6BUH7C+Rhh`d-9M0va$kI~RMq)nMdVwrFJ zdbFv!#4O^wFZ=>r zMk9iV9aJ4vz)_P&QmMq9Sz>a;Q*SA1v$&7OVIjkn`Qt!pmkO{gbm7Ddr?ub6_d`e` z;{`4$*PwSHd(`IbcMZ4Rr1BOQ;$XnprFpDAHuziX(UgGm6oQbRZ|E{kjl2#!gTSky z_1<8YY_R_eFjpB7o)JKTP@HopezDKrfVlKHK|Tqq}C^QW}X{8sT} zG_`i~mbspZ&;#y==vk}v@5dUu^^I-i|_NEc#Nd`jEnbtk7|$ta!ox>9C#BGh-58F z-U$!C_D^64VI|IG5o1w{`G6rZO=v*==5thUK=mK(51}|e^F?gq6f5cyKN=rlgVjKc zX2NxGxNCny$X;5Ybqkb343Zl8=1)=M09Jr-e+Q9v z2gK@pUHKe)Rb?Y8LZ9%SO(YKP@8kJ(XNf)T@8h=6jI{FBK85aRA_YQI3ki;5^KBrs zyqW5I8&FsqX!5vGA>~?RV|^rjwIq}WR4nfzmPfT%zBQDesO6sqVVb=}^)t0WHnYkH zsk`C#cNzVoLWti$9tKQq{{-D@fp@mKzM66 zmM%g~oX94EL-J^sTv#g&=>jRV2jQUY$GKu3MvWFELcn&Jvsf@U0~ z2-E{K^;I9dB_f-%i6n=FT2`3#j@2o2q+JzShM|XPWoCV}p`oZHqbXI%2c4uJXa!+P zOSv62Jl(Xs0DL5ZJAQ;LQPnsr~-|~bewWE2^hAENWtYtKxGPA zBvCI74G*T#>1UW-qAVtLQ5so~1(5SO_S7(RfK}r@tXxWzgyIdB)DU|K_{$9oKLHl>hRXhzf}BeRl^D* z+0XSH76rZF6VBmT~^4ZQ4!u;=ucDyZ8aWVH!jg2dRSZjts$9 zk>Mykf=eMSpT*7a#Hr`svs)4-9#`vYt!oP({M92m*$pH#ex9o_nu)H7Gu)sGvqh-J#JcR=VyKj=mA%^aA<82ovyBHc% zyEx-q-ItE+Zh@U>;4TPVe0=O&U{qv0iO)Fn68G_*T-YjBDb<3FIt|L_C~gz)O|!Hd zF_VBmc{H410>8SQep+cU$tvf+!qS4< zW(2JN-={AL$Gso8Z`>6tkfN9Zs$pUTnp0s%lQc>FdMS? zbx)&jVkezdWQpA^y=mA_EdjrAQcu)?6dcC72Sy6mjy529CGNCe_dE$9I*fN7QgM9@ zzxsAy+{v%41ZP1qAwgksf>SG2u@5Q5l#rYTj-N@^6{aPt(=KhG6viSAy(-uLksRyQo)E(aQaWn>R2g=ZU zWbvuH#4Xuy}r2Wjm= z7Yij@GL7^y8s!@D3)ZWBH#;+tVrEBdIG?t+xW7mgTTsL79LDU<>`sc9J+MrVgF<4+ zFeKm`3lv+Gxdba%$R_|sKcCqEVz2^SfQaFjX1a|sVF$mi6)x3sK5K^+229>be&G&0 zhDRuygphvxq~An;<5Bb_UT8UtvF(D6PC1EksqRNT961MqE`G3zwN$i+*^G2{si8$1oC8ggA5$z zPY}d2aw3k@1V|StrLdN2PvFEX=P=SAOj(IJ)+9_6$c3_q%%9Nx+zt!0I4r2o$%27D zt(DZ>m3+9jOe@-aa}6AHr}8OEfxYCeqQAzL?=ia?&z#0w;eX{<3^0{K6HWOw=|brd zCd`nt^&>$!s3h4QPNJ)2UEVG}!uSe60uM>fQ?3Fc8vKyh%)9x&5gQbKOA~@rCJKvE zvZ)RmRvTKzsHKl#DGP|NE&RHDAf2S}Feo-tZ)p7_w|CQ@5rLd%38fu3+0yt8Pa=-@ zEzD+yCancLrC#8ef_zoO(RuJS52Cpt4q;k1?gws+Y5E_hkZeNTGHHX-o$x;Iz6+Un z<1wUBFtBcaoGmv<-+96KSl%#Fd-$|VJBJS>Kt;<}j-Xu*E_$ZG&UIkO(~+QXs?ocU z=7bkGZQ_75Pj40X+OqpBKC=!N=uCSx0e$dV=@m9?zFFV7Klu(S04l|j-EHwrCHYomKdU_( zg|j;}MA_}+W<-q~unva{*C5E4un`)RE!)#cm4YskI7oY!8&N*gahAz%IEXB^2lsX%B-!+s%vM}G_O(z{^;o&7JM1$y2njd= z#IXcsKN~+-6Cj;hBWLwfR{r(M#te)5n=#gFD$$X-nZ*|OaXrp{$5?f^b+U;~2dgOK zD&hq+!7ri-E_P`82jyXEArBvsAmKQ}I*49?4NFM)ZUI$R8eiHcZ&(FM)%p|1udhOk zDP+>K-owNILV^L@2J?xN$6@B9NtmCk@A7su4V>(ZL8{Ema_@{&=3{b(^hXFYEo!LG z;d?EZ_E2el68mK|+zV-4$~$S{ukOHKqv{q+3WM&qkUXtkEgc z5h6*>A*n~h%0zIA*5HMtRy_1AtEs-U2^hLzG>Od+d=mHL1>$$SHwc*p6|}-ow-~h! z@%c=;A0dd(WM%*=t;nHQR?<^I(EeenCdO;R5DhBV&*@yr;GLQ7oi!xVZ0Ltigbd?h z>h#B#G$Lg|JF;-4YnU5HnfQ3wVbDNJlDVmhw$phxX?nqP2ebiuh2qS%p&&svpnb#( zOkY7RSrR$~FCXP8$wZ?g@nS;QT_WjXQ; za0O>Xcoi1=Ir$N$90Z)y`TtF9VQ)**VJDMN$SG-%i%A5occxI?T8C3YBKB)@(g5NJu1@Pm<-mSo~x^vcY<05i~A$!{(MPum;Lngrjppz{ly`>P94Q>v2MR&2k)_B_{sFT5soWhIf6dq1$eCpjzK+FumZQYfpTIHb_Z0M z8a!WP^I>5{we}j?+~InedO_>)PB`)Um1iLdII@LkTQO!eq|BDd7n69S@nu*nAlnXc zxBLP6uO%VAOJ0eEkMux|H5J?p>|yxXo+074tEWvNG%9pxURF)t>VL|Tf3T=@hI zV@l=?kK!C#xm1&1Nrd}2tZ0-!KvOZ*nA;yxj!_y>!wa;WqDMUpi4z=@YhFh+cEpuK7)i;I)`L0zvm0nKFxx8?9?K}o znJUB3rL38RA++$fU%DrduC2!ygcf)Rw3UENU|c&&R!!ooyT}Npu_S|iS`Y>!ji_n2 z3nG)6QUYuk-5%J8dog;gD+^G34{2q7Z6+8Y z37jWXyIR={zPz9#laJp#4ZOJ##nnlYiicnm)Xo6jLU!{>NWq6J~tw(}@<5?-Eo=ab zbZeq~F_aX%gsDJmFP)xd_bo_u`1D?AZB9;rHr70fCuALHhK5%VN)*CN+~M5eFx+j>Skfe^GK)7#cuk6U-1X~T=DFiWX&jJu>MiwnzYc!+{m2C zD%ng5m35eVS_f`G2Qa)vkY*Z-HL`n62DgQb8hm!8Pst#bPR}4S@B*MAEp``@+7nEX zq2FdgX%%q_$`AtHyA(~JG}(IZAsChna>hhU#*4IzgJi7#B{A+hlk<72__@k2_s(2p z8TzDA`V<5#hSe*P2ZLmFT}+K~)-Z%$GcEp#?AY^0Gy2)?28G;nGkSc%0 zRM%GXzhUx0So?QESW6foMi8mIM`IqATYkgWMA(`Poo!UV<@7#_`$($t$q$q04Gk%5 z>OYbW+{zB9x?I0<3EfIj|19&#!!GV|`0N=%sXdKusu@h353UrRavvU3;JZ|Wf3wlK zN=kquUH>N0Bks-qphqq+wef4WAzC2rwn;hS8FEL%xvsbL91-_gllm<1KwBj9IaYM# zhxY7KcHf+DAxUv|-`q#>As8{vc`uy6a2S){IxaAa*7J^hww>?D&j4z=^?+9s?WR*$ zrQpz8@d>Wt`1O(iC4k0EZE&!zJT9ExH^ZmDjBwy(0x#H)j|RzcbVoSNxmiU4=c0!Y zV!C&Q+WQZXDlV`YUXSp3Al~Q48^yCTFl8Tdm|E+umh2h1e&(OfVE*Z$@Qx3s=G}fH zUg}@@<*Bw){PtbCPJA~2E@}1sKYZt4G1@9U0RzTai51~$T)=W&hVNLIf1!O&BG@At z)}RnFoL^Eg8ywtOcyDA2t)S}+rO1Pu{8o5rmk};$^xGAn6P5syK<8vbqjpVqVPeH?d3vfg`2O4Go9(n=7>q~orHHrnTZ&MEe$)Dvx-L8DD9Q@LzpjnY}RT9Ou3-F=@?saOzK_ z(MsneVr0L?pu4A7i_rl=!T^hx;u+?=NF5Wps%E@Xc>_u=vhNg)=9{Uz|;eIAm%SbhxA5W)TsCxg)d$jHY+i9A@9^7;vWF zv@-d@Q8?fsvvtwB3~?op5gQ?UMR&DH(-U#ZCF?NUY#4SruVf1(R!1Rvb(Bd})873n z`5TlC{2k2M#;6#?AAINxjOFBi5L+<2hKdU_I?QR5rm`VYKI*m_eHf_p_B2OnEuGH6 zh_aeaJvdz4j{{75>3`^L<lDY$ST&NQT9P0&)4%42M@7csVa7wxp z?e?$yvp2Zy6V|6O4u#LrptSu$)nII0q z2M9Z8#JIq3)OPKx-6;>vVV!c0aZfq22yOG;iEQ4cj9~2-p?$@O6t&VMm{zJzabDJ8 z&Y*X1LlP(&ZXi@zBQN74Hdi1{e^`2HS&yFYQTNNUAcEotII@(g(prKByuT#b6LsJD z?$VjsR;OzF4R#)BYFl$!{wI;GeJyV%kb8p;pE-kH|1!eth|MrENt15`XK)@G8r(tO&t~)h4GB5$Sj5@q zRt5rZ;>226%*Kvhor%&z@q2Ql%u19mA^!pSFNozr>3pcTSsCI& z>;V?Qs1P!k69%jJq(_C)1=t;odyJ_L7!=ZMF!&CYGua0n*|-4EMe;BkGhW6)elHI4 z-(R^`Fuk+l<^pjKUcv{b$m+64x1m-W45?6+IZ;*itvn>0-i!4omu#;BpW{)CtD?vB z9l`1=s6PS&2$ghFTuACc)!M55XRi+NB7MYA;c0+&$tJ9=q;(+D)8l?2_szie8vl(!Q>yaim9vi7&JiGzNgQ7MI%6cYzdr~mb+2$N=(i`V);~eo`q9y3OP)E*H_W?@iD9z z48gIRVURU92gm+NgTKQnT!F?KR*WhLi z{!W8yHCUy=`5K(2!3i3?OoPKU_$8J(>c=|_hW1NrKZ6gugG*SldvLT3tye($Z6X2~ zCX1xAs3s7mp2GuY(O)po*z!IFpj)w~VHG|u#CxAdjQo$2>BF=+@PsuZA(*a1V^Afx zllMD^T#%FPv@KbC0=e)7vI7!!G2g;oFs1irU?g(k`UkL56ET~R$SwpxcJT#Pdimai zBzC$*Enz2xOJDKjVglP`~yy2ajpTdLDe|OO5bL8y|tZpU~Yj zB&=;&f(sUGdISI?VPMAPA^LjG&7tAIrw}k4d+_$9{44Th(r^gOY>iTI`2G(L-~6}$ zR8HrSt_#Z>&jz`bw>6Cj3vwI1h3&9HOkqJnRw1Ge#vTN6D4@PZPv@Bs3Y=5p)*k-n zjeWPXsh0?EuLEoUtMV@B=_rvT;b;qgj|}y$QRNPAlR@TWdWR0~Tl)WW_}BJX@QD-J zxgC&aLU37E)UT1n$Wsoxuet|U@?@u4y$pb^G~?<3IVt}`qe>TOo0x zDSMyU{!AGVYeJL>a9k*}K(RXLZ2vFrk?FJu-yQL#*>SH(PoK7?MY*jRUm4w1$Z-&M zk4huf%XNm$l*ACI{sVCj?6jAO4W|7o`K=eCsQes@wynVDj%MaCY;X%%;LAYKwUmdC zerLms>cX26`U?MxfBoxU;l-9|-Zsw6;2Ib|*k^8|{W($XSz_B`yC>72_C}$-#?p-7 z8fHn7K`CUn2`%61D-N*+XQndB6fzcAf6(9T(P&!I`uE?(gJXY(CTJa7tHCQZn4rP_ z`IH~xAJ#h-4~~69gMZiH?=-kxgR3=IrNO&3I7@>!YjA=FFVo;~4SqjQrRz%#{zrrF zXz&dU{#}E=V{jh*|2oQ_o(jnaIL7{JR++(~$X_TulJZmN{|*kol^FB4@xK{|U`%Pa z6$Zs=+@h1rh_t;K4Ek?Tk5Va*UhNM3HME#RK?aNOkBv8I@n#LCKA`4r)Z#T-JcOiS zP`r6iJXG!{sB)mPV)4?_UyRSae!`NIN}tX_>PK z|A(imvWzQ=3Ul+SYRgKimsVBWU$(?}hi#U%sNh!XJcq5wQfM!lbt`ADT2WG2vBZd9 zSDCT8+<3pUjw@VN!{u&&uY)*>x3FOI?*EwH40$j9GK+(~-yiZbjeAE2~!;YfGw@mW8U{I^TBN zG{>zAvbn;NT4zN`rLnTQu8xMMt^zVvUV;BxwzSNcRp_{N&K!nmZng7AOU(_J;<&jO z-rBM{SEbX4|EktmU2UveUQ$^}fB}t8{nJr6}fTB9%*c#)qk~(8mwXtG($MwJ%j%3JPGd zHRjZht>=J0)c2aYGS`x7u&A=Sw1nEG|LE6QU0Pjf)Z`aUVrr;=|5d%k6;6!f{g`5r z@*%pis$7+o+1#v>Sx_0}^ndAAaW1YB|1^Pl4KJ~2Pw!?mJW-1qqw>rM`?dUyfL<+J zticeD{~eg4;rQlNwf&udPv9xj;${sJZevt%m|b;-Rs_|4MvINq%+dpVxKY@~_TfDeK|(TfV*T*}@C0J-6u3KKR>_;~&qP zc*pd46j$r?X)x2Q#uGJosRq+DNY;AvU$0h={@-Vg8-?e==VDG=N`X!IiUITXL6ncY`$#A z_I-epuKebnKk{n*=zpYJ z3%@$N@3V_%S|5AAAmQD<1}pHgzwP4wC;!>~Oy0GBe&PKq`t7DEfBxF~9skFPzkTwN zcN4eWIX1s~(~_)&&d{_ARf|Ba{fnv$ufDqFm(#vEbBhvx>*RuoqjSy(D<8Te@6Eb3 zAKjYnid2XVnH$V835A2=4TJ1O^Ruz#2giFKjm-z&V(`D$9UDJ4D4y06o1Zx--sO+Y zuiq0JuNf5Y{Z(u}*Bcv89Td+P6wetHZ}7*~HxG*Y2gNsD5nH}tbZoqMQ2FLT@xnpz z`ayB$pm@!o`1Jhz8;x1hXU)qtUN_;o37Fxre?R5_#Gjw!=k%MeZl z9Eqm}VI$xwJoN}S0ItR3LAV+4GdzzVOmKPz$32BG!5J{F+9x(_W|y{3jComfM4O+Na=uaS>P4I zsetqFynt{q;P-eoAxzt*r}1n-cq8CJJbr|G0q?mQJVdw#@K1QU5Pk{Jat+7rN4OC1 z;&CX8a53QT@yJvL@DJm`Hwps|nE<{aoC-J+UqsXY6XOneK@P`dP#AD2o=k*m0Egyc ztPoBGzYb?h2sZiSzz2j= z0q?<6gK!Pt19<8YZUB_&-H*qE@K1mLdmPZAnoh6d^iwss7?4lo zc-@6uV$P7_gc?Jk-XGVMq?PG)A|G{LNyCK(JfzDA4$glMXLzl7%7^-s5YHt{1-4?9X4co} z{tnK^8}TEX5+LUWZrCzCmvA_$E|n$92v_nDF8R4=?jUVMl3~PcDe*&dl8O^+hWHI# z@x5x_z}x4v_6>2IVWKWamuTP;r|NU!i{olonIU>^$i(=ZxME$6E>tE2iQdo?T`tte z|0$%pw`pxqomSutwSmuU46oHFFHG?3yW)Cv(QQTZiRvy!-IO7Ql-rWx6LJj2`kHt@ z>&MUpZsVI6rfXX}+Rffi&$f<|1bygx*`o$ zet>np8+JleTJnDAdZeB2@53H7^=l0#zo*78*5CvU-mJmfG`K{AD>V3+2LGhNH#FF# z!6O>%*I?TFYCD%|@M;a_Y0#m;5Y3CV`28Ae*5IEsxLJd(8tl?wuLe(QFkzpHF;#H_yEJ%EgP&=z zPlIPQsK+?dU#bSx81_v+jVEKp|5wKI5}mcI5~tnyICaH|Y2_U4%!#I~l{qRF*OuV?y)tfknR6OW;|g)oISVJ%7VNSp%~4Y4w9zpyta6GMu`FB>Tv%tM)&`w&l6I1Mw zLMiO*mE(pbgc_V%9j1bt%oP>o7uD62mD0I&k=iDBXGVHaWoZ!|w$|WCx2W7zRm$a4 z>hi@!rLI~WG1se!+-*o*TIQq^_LADAb=(}p=~%9;Y6Ul!!qtnll6N9jSz2ASg5_f$ zjd&gIY?Rd06ghG20J}&v#Z`w}5b7B=_`wyGlrCRVS;gVrMalBIrMOQ~;l%iIMWt%! zNrbAGuO?iUoG< z6sjs+Uc=q3UlD4WtJkkAtz-F61+)(SU--M-W^k3Pj3GMM`E&nOl*vBL)u~;oPK{GFX_oxiKk?geRufQ%E@%lkz8| zB*&z*BBe40&pSxb$E19WluKh$j!~@`JPA7NZ(~v}M+*I)hmoF6LW(m6&n-w<6jSC7 zq&yQ-W+_rWj7h0O%HuI94M^D(ld=IROJXoTkCat0W$4SMZ^e|^i4^*a(EKq{(qhV- zMapL}DfF2!XH1F_vAmd+>kvy$jK+K$Ql5{YrwA#NVrs3RGBGL5h`kb1>$gaGBqrsr zNO8o}q7ND^iYfCxQg+0oP@m?;)cO{&_hM3pp+<5{$|y>S!E+^It76IsNXd&SGaoTe zOqs<<`8p=$KBPPnlR~dfEx{8RonIq%X-t_Hk@9#^4>_ukCo$*!g$LYM#0q3DpYkjZLQU!|CK*NL#FMewerkEq2*6QXwMYC>qMJxH3OMpzRkZTB6* Y`$GqbmZP~7Lgm1Kh>Jr@4EZbm7fnF6EC2ui literal 21293 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 diff --git a/PhpManager/private/bin/Inspect-PhpExtension-x86.exe b/PhpManager/private/bin/Inspect-PhpExtension-x86.exe index 27c7525f2bbcc096c4b044b86356fba1bd8c76de..9d431614c5f2db315f7d6bf7df0c9a2134ef2495 100644 GIT binary patch literal 38269 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

LY>zQ5JY#PS; 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 M`!G@LrC$vH8%?&Cm;e9( diff --git a/src/Inspect-PhpExtension.c b/src/Inspect-PhpExtension.c index 7fd136e..12cfcd9 100644 --- a/src/Inspect-PhpExtension.c +++ b/src/Inspect-PhpExtension.c @@ -142,7 +142,14 @@ void parseDll(HMODULE hModule, extensionInfo* extensionInfo) void parseFile(LPCSTR filename, LPCSTR architecture) { - HMODULE hModule = LoadLibraryEx(filename, NULL, DONT_RESOLVE_DLL_REFERENCES); + DWORD rc; + TCHAR fullpath[MAX_PATH]; + rc = GetFullPathName(filename, MAX_PATH, fullpath, NULL); + if (rc == 0 || rc > MAX_PATH) { + printf("Unable to determine the absolute path of the file %s\n", filename); + return; + } + HMODULE hModule = LoadLibraryEx(fullpath, NULL, DONT_RESOLVE_DLL_REFERENCES); if (hModule == NULL) { printf("Unable to open the DLL.\n"); } else { @@ -162,7 +169,7 @@ void parseFile(LPCSTR filename, LPCSTR architecture) extensionInfo.type, extensionInfo.name == NULL ? "" : extensionInfo.name, extensionInfo.version == NULL ? "" : extensionInfo.version, - filename + fullpath ); } FreeLibrary(hModule); From c2cb863904c174d72fa3a33ceac104a84c8e31b7 Mon Sep 17 00:00:00 2001 From: Michele Locati Date: Tue, 10 Jun 2025 10:17:57 +0200 Subject: [PATCH 2/2] Fix installing pecl_http PHP extension (which includes the raphf PHP extension) --- PhpManager/public/Install-PhpExtension.ps1 | 135 +++++++++++---------- 1 file changed, 74 insertions(+), 61 deletions(-) diff --git a/PhpManager/public/Install-PhpExtension.ps1 b/PhpManager/public/Install-PhpExtension.ps1 index f4f5e5b..d87c9f7 100644 --- a/PhpManager/public/Install-PhpExtension.ps1 +++ b/PhpManager/public/Install-PhpExtension.ps1 @@ -83,6 +83,7 @@ $tempFolder = $null $finalDllName = $null $additionalFiles = @() + $newExtensions = @() try { if (Test-Path -Path $Extension -PathType Leaf) { if ($Version -ne '') { @@ -95,7 +96,7 @@ throw 'You can''t specify the -MaximumStability argument if you specify an existing file with the -Extension argument' } $dllPath = [System.IO.Path]::GetFullPath($Extension) - $newExtension = Get-PhpExtensionDetail -PhpVersion $phpVersion -Path $dllPath + $newExtensions += Get-PhpExtensionDetail -PhpVersion $phpVersion -Path $dllPath $moveDll = $false } else { @@ -165,8 +166,17 @@ $dllFiles = @() } } + $additionalExtensionsDll = @() + $dllNames = $dllFiles | Where-Object -Property Name -Like "php_*.dll" | Select-Object -ExpandProperty Name + if ($dllNames -is [array] -and $dllNames.Length -eq 2 -and $dllNames -contains 'php_http.dll' -and $dllNames -contains 'php_raphf.dll') { + $newExtensions += Get-PhpExtensionDetail -PhpVersion $phpVersion -Path $(Join-Path -Path $tempFolder -ChildPath 'php_raphf.dll') + $additionalExtensionsDll += 'php_raphf.dll' + } $dllPath = $null foreach ($dllFile in $dllFiles) { + if ($additionalExtensionsDll -contains $dllFile.Name) { + continue + } if ($dllFile.Name -like "php_*.dll") { if ($dllPath) { throw ("Multiple PHP DLL found in archive downloaded from {0}" -f $availablePackageVersion.PackageArchiveUrl) @@ -184,7 +194,7 @@ $keepDownloadedFile = $true $dllPath = $downloadedFile } - $newExtension = Get-PhpExtensionDetail -PhpVersion $phpVersion -Path $dllPath + $newExtensions += Get-PhpExtensionDetail -PhpVersion $phpVersion -Path $dllPath $moveDll = $true } catch { @@ -202,73 +212,76 @@ } } } - $oldExtension = Get-PhpExtension -Path $phpVersion.ExecutablePath | Where-Object { $_.Handle -eq $newExtension.Handle } - if ($null -ne $oldExtension) { - if ($oldExtension.Type -eq $Script:EXTENSIONTYPE_BUILTIN) { - Write-Verbose ("'{0}' is a builtin extension" -f $oldExtension.Name) - } - Write-Verbose ("Upgrading extension '{0}' from version {1} to version {2}" -f $oldExtension.Name, $oldExtension.Version, $newExtension.Version) - if (-Not(Test-IsFileWritable($oldExtension.Filename))) { - throw "Unable to write to the file $($oldExtension.Filename)" - } - if ($moveDll) { - Move-Item -Path $dllPath -Destination $oldExtension.Filename -Force - } else { - Copy-Item -Path $dllPath -Destination $oldExtension.Filename -Force - } - try { - Reset-Acl -Path $oldExtension.Filename - } catch { - Write-Debug -Message "Failed to reset the ACL for $($oldExtension.Filename): $($_.Exception.Message)" - } - foreach ($additionalFile in $additionalFiles) { - $additionalFileDestination = Join-Path -Path $AdditionalFilesPath -ChildPath $(Split-Path -Path $additionalFile -Leaf) - Copy-Item -LiteralPath $additionalFile -Destination $additionalFileDestination -Force + foreach ($newExtension in $newExtensions) { + $oldExtension = Get-PhpExtension -Path $phpVersion.ExecutablePath | Where-Object { $_.Handle -eq $newExtension.Handle } + if ($null -ne $oldExtension) { + if ($oldExtension.Type -eq $Script:EXTENSIONTYPE_BUILTIN) { + Write-Verbose ("'{0}' is a builtin extension" -f $oldExtension.Name) + } + Write-Verbose ("Upgrading extension '{0}' from version {1} to version {2}" -f $oldExtension.Name, $oldExtension.Version, $newExtension.Version) + if (-Not(Test-IsFileWritable($oldExtension.Filename))) { + throw "Unable to write to the file $($oldExtension.Filename)" + } + if ($moveDll) { + Move-Item -Path $newExtension.Filename -Destination $oldExtension.Filename -Force + } else { + Copy-Item -Path $newExtension.Filename -Destination $oldExtension.Filename -Force + } try { - Reset-Acl -Path $additionalFileDestination + Reset-Acl -Path $oldExtension.Filename } catch { - Write-Debug -Message "Failed to reset the ACL for $($additionalFileDestination): $($_.Exception.Message)" + Write-Debug -Message "Failed to reset the ACL for $($oldExtension.Filename): $($_.Exception.Message)" + } + foreach ($additionalFile in $additionalFiles) { + $additionalFileDestination = Join-Path -Path $AdditionalFilesPath -ChildPath $(Split-Path -Path $additionalFile -Leaf) + Copy-Item -LiteralPath $additionalFile -Destination $additionalFileDestination -Force + try { + Reset-Acl -Path $additionalFileDestination + } catch { + Write-Debug -Message "Failed to reset the ACL for $($additionalFileDestination): $($_.Exception.Message)" + } + } + if ($oldExtension.State -eq $Script:EXTENSIONSTATE_DISABLED -and -Not($DontEnable)) { + Enable-PhpExtension -Extension $oldExtension.Name -Path $phpVersion.ExecutablePath } } - if ($oldExtension.State -eq $Script:EXTENSIONSTATE_DISABLED -and -Not($DontEnable)) { - Enable-PhpExtension -Extension $oldExtension.Name -Path $phpVersion.ExecutablePath - } - } - else { - Write-Verbose ("Installing new extension '{0}' version {1}" -f $newExtension.Name, $newExtension.Version) - if (-not($NoDependencies)) { - Install-PhpExtensionPrerequisite -Extension $newExtension.Handle -InstallPath $AdditionalFilesPath -PhpPath $phpVersion.ActualFolder - } - if ($null -eq $finalDllName) { - $newExtensionFilename = [System.IO.Path]::Combine($phpVersion.ExtensionsPath, [System.IO.Path]::GetFileName($dllPath)) - } else { - $newExtensionFilename = [System.IO.Path]::Combine($phpVersion.ExtensionsPath, [System.IO.Path]::GetFileName($finalDllName)) - } - if ($moveDll) { - Write-Verbose "Moving ""$dllPath"" to ""$newExtensionFilename""" - Move-Item -Path $dllPath -Destination $newExtensionFilename - } else { - Write-Verbose "Copying ""$dllPath"" to ""$newExtensionFilename""" - Copy-Item -Path $dllPath -Destination $newExtensionFilename - } - try { - Reset-Acl -Path $newExtensionFilename - } catch { - Write-Debug -Message "Failed to reset the ACL for $($newExtensionFilename): $($_.Exception.Message)" - } - foreach ($additionalFile in $additionalFiles) { - $additionalFileDestination = Join-Path -Path $AdditionalFilesPath -ChildPath $(Split-Path -Path $additionalFile -Leaf) - Copy-Item -LiteralPath $additionalFile -Destination $additionalFileDestination -Force + else { + Write-Verbose ("Installing new extension '{0}' version {1}" -f $newExtension.Name, $newExtension.Version) + if (-not($NoDependencies)) { + Install-PhpExtensionPrerequisite -Extension $newExtension.Handle -InstallPath $AdditionalFilesPath -PhpPath $phpVersion.ActualFolder + } + if ($null -eq $finalDllName) { + $newExtensionFilename = [System.IO.Path]::Combine($phpVersion.ExtensionsPath, [System.IO.Path]::GetFileName($newExtension.Filename)) + } else { + $newExtensionFilename = [System.IO.Path]::Combine($phpVersion.ExtensionsPath, [System.IO.Path]::GetFileName($finalDllName)) + } + if ($moveDll) { + Write-Verbose "Moving ""$($newExtension.Filename)"" to ""$newExtensionFilename""" + Move-Item -Path $newExtension.Filename -Destination $newExtensionFilename + } else { + Write-Verbose "Copying ""$($newExtension.Filename)"" to ""$newExtensionFilename""" + Copy-Item -Path $newExtension.Filename -Destination $newExtensionFilename + } try { - Reset-Acl -Path $additionalFileDestination + Reset-Acl -Path $newExtensionFilename } catch { - Write-Debug -Message "Failed to reset the ACL for $($additionalFileDestination): $($_.Exception.Message)" + Write-Debug -Message "Failed to reset the ACL for $($newExtensionFilename): $($_.Exception.Message)" + } + foreach ($additionalFile in $additionalFiles) { + $additionalFileDestination = Join-Path -Path $AdditionalFilesPath -ChildPath $(Split-Path -Path $additionalFile -Leaf) + Copy-Item -LiteralPath $additionalFile -Destination $additionalFileDestination -Force + try { + Reset-Acl -Path $additionalFileDestination + } catch { + Write-Debug -Message "Failed to reset the ACL for $($additionalFileDestination): $($_.Exception.Message)" + } + } + if (-Not($DontEnable)) { + Write-Verbose "Enabling extension ""$($newExtension.Name)"" for ""$($phpVersion.ExecutablePath)""" + Enable-PhpExtension -Extension $newExtension.Name -Path $phpVersion.ExecutablePath } } - if (-Not($DontEnable)) { - Write-Verbose "Enabling extension ""$($newExtension.Name)"" for ""$($phpVersion.ExecutablePath)""" - Enable-PhpExtension -Extension $newExtension.Name -Path $phpVersion.ExecutablePath - } + $additionalFiles = @() } } finally {