{"data":{"id":"magento2-39084","source":"github-pr","sourceRef":"magento/magento2#39084","title":"PHP 8.2.15 removed FTP extension","pr":{"number":39084,"url":"https://github.com/magento/magento2/pull/39084","author":"rafaelstz","mergedAt":"2024-10-19T07:07:46Z","mergeCommit":"02457f957c80a95e50c5f04932a49932c07e4aa2","headCommit":"4346a936c19e404159a27fc7eb4e5ec0a49ea87d","baseRef":"2.4-develop","diffSha256":"d08feacf1dae11d1ddbc46bcc8a650d5443d0ecf32cd60a69124c10aee9416fb"},"issues":[{"number":39083,"url":"https://github.com/magento/magento2/issues/39083","title":"PHP 8.2.15 removed FTP extension","labels":["Area: Framework","Component: Backend","Issue: Confirmed","Priority: P1","Progress: done","Reported on 2.4.7","Reproduced on 2.4.x","Triage: Dev.Experience"],"kind":"human"}],"fixedIn":"2.4.8","containingTags":["2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5","2.4.9"],"reportedOn":"2.4.7","codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"conflict","2.4.8-p1":"conflict","2.4.8-p2":"conflict","2.4.8-p3":"conflict","2.4.8-p4":"conflict","2.4.8-p5":"conflict","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10"],"components":["magento/framework"],"files":[{"path":"lib/internal/Magento/Framework/composer.json","change":"modified","package":"magento/framework"}],"stripped":{"tests":[],"docs":[],"outsideCode":["composer.json"]},"linesChanged":1,"mergeBatched":false,"excluded":null,"sections":{"description":"An exception is thrown, logging the error below.\n```\ndetails error :  Call to undefined function Magento\\Framework\\System\\ftp_connect()\n```","stepsToReproduce":"Configure CSV import via FTP using admin panel.","expectedResult":"The connection is established, and we started working on importing the CSV via FTP.","actualResult":"An exception is thrown, logging the error below.\n```\ndetails error :  Call to undefined function Magento\\Framework\\System\\ftp_connect()\n```","source":"issue"},"signatures":[],"labels":{"area":["Framework"],"component":["Backend"],"priority":"P1","severity":null,"reportedOn":["2.4.7"]},"categories":[],"triage":{"model":"@cf/cloudflare/clef","requestHash":"0818453e6f15d3acb25e90d654096e439dc98a297ac9f958a7221c8b54b0dbc7","isBugfix":0.9552,"changeKind":{"choice":"dependency","probabilities":{"bugfix":0.4328,"feature":0.0103,"refactor":0.0046,"tests_only":0.003,"docs_only":0.0034,"dependency":0.5459},"confidence":0.3825},"scope":{"score":0.1881,"probabilities":{"0":0.8463,"1":0.1193,"2":0.0344},"confidence":0.5974},"risk":{"score":0.1796,"probabilities":{"0":0.8531,"1":0.1143,"2":0.0326},"confidence":0.6127},"area":{"choice":"framework","probabilities":{"catalog":0.023,"checkout":0.0103,"customer":0.0097,"admin":0.1485,"graphql_api":0.0127,"framework":0.7105,"frontend":0.0114,"other":0.0739},"confidence":0.4667},"securityRelevant":0.0103,"reportedVersion":{"choice":"2.4.7","probabilities":{"2.4.0":0.0028,"2.4.0-p1":0.0027,"2.4.1":0.0024,"2.4.1-p1":0.0022,"2.4.2":0.0028,"2.4.2-p1":0.0026,"2.4.2-p2":0.0028,"2.4.3":0.0038,"2.4.3-p1":0.0044,"2.4.3-p2":0.0048,"2.4.3-p3":0.0035,"2.4.4":0.0047,"2.4.4-p1":0.004,"2.4.4-p10":0.0035,"2.4.4-p11":0.0054,"2.4.4-p12":0.0045,"2.4.4-p13":0.0051,"2.4.4-p14":0.007,"2.4.4-p15":0.0051,"2.4.4-p16":0.0049,"2.4.4-p17":0.0046,"2.4.4-p18":0.004,"2.4.4-p2":0.0021,"2.4.4-p3":0.0022,"2.4.4-p4":0.0025,"2.4.4-p5":0.0034,"2.4.4-p6":0.0036,"2.4.4-p7":0.0033,"2.4.4-p8":0.0036,"2.4.4-p9":0.0032,"2.4.5":0.0041,"2.4.5-p1":0.0024,"2.4.5-p10":0.0024,"2.4.5-p11":0.0035,"2.4.5-p12":0.0054,"2.4.5-p13":0.0041,"2.4.5-p14":0.0046,"2.4.5-p15":0.0043,"2.4.5-p16":0.0037,"2.4.5-p17":0.0038,"2.4.5-p2":0.0023,"2.4.5-p3":0.0027,"2.4.5-p4":0.0031,"2.4.5-p5":0.0033,"2.4.5-p6":0.0041,"2.4.5-p7":0.0039,"2.4.5-p8":0.0033,"2.4.5-p9":0.0031,"2.4.6":0.0163,"2.4.6-p1":0.0123,"2.4.6-p10":0.0098,"2.4.6-p11":0.0086,"2.4.6-p12":0.0088,"2.4.6-p13":0.0078,"2.4.6-p14":0.007,"2.4.6-p15":0.0076,"2.4.6-p2":0.0029,"2.4.6-p3":0.0038,"2.4.6-p4":0.0062,"2.4.6-p5":0.0051,"2.4.6-p6":0.0063,"2.4.6-p7":0.0066,"2.4.6-p8":0.0058,"2.4.6-p9":0.0053,"2.4.7":0.3299,"2.4.7-p1":0.0501,"2.4.7-p10":0.0174,"2.4.7-p2":0.0164,"2.4.7-p3":0.0187,"2.4.7-p4":0.0189,"2.4.7-p5":0.0163,"2.4.7-p6":0.0229,"2.4.7-p7":0.0238,"2.4.7-p8":0.0171,"2.4.7-p9":0.0094,"2.4.8":0.0145,"2.4.8-p1":0.0113,"2.4.8-p2":0.0099,"2.4.8-p3":0.0105,"2.4.8-p4":0.0086,"2.4.8-p5":0.0094,"2.4.9":0.0084,"unspecified":0.0907},"confidence":0.1145},"backportWorthy":{"score":1.5019,"probabilities":{"0":0.1182,"1":0.2617,"2":0.6201},"confidence":0.2004}},"curated":{"title":"Fixes Call to undefined function ftp_connect() in FTP CSV import","description":"Without the PHP FTP extension, configuring CSV import via FTP using the admin panel fails: an exception is thrown with Call to undefined function Magento\\Framework\\System\\ftp_connect(). The change adds ext-ftp to the dependencies in the Framework composer.json.","categories":[],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":null},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39084 details"}