{"id":558008,"date":"2025-04-16T14:18:22","date_gmt":"2025-04-16T13:18:22","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=phpstorm&#038;p=558008"},"modified":"2025-09-15T16:23:21","modified_gmt":"2025-09-15T15:23:21","slug":"phpstorm-2025-1-is-now-available","status":"publish","type":"phpstorm","link":"https:\/\/blog.jetbrains.com\/phpstorm\/2025\/04\/phpstorm-2025-1-is-now-available\/","title":{"rendered":"PhpStorm 2025.1 Is Now Available"},"content":{"rendered":"\n<p>This release is a major update that includes improvements in PHPStan annotations, Xdebug, and WordPress  support, an AI Free tier and new subscription system for <a href=\"https:\/\/www.jetbrains.com\/ai-ides\/\" target=\"_blank\" rel=\"noopener\">JetBrains AI<\/a>, and more.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/phpstorm\/download\/\" target=\"_blank\" rel=\"noopener\">Download PhpStorm 2025.1<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Featured_Blog_1280x720-2x-ps-20251.png\" alt=\"\" class=\"wp-image-560026\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">PHP<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Code completion for <code>@phpstan-type<\/code> and <code>@phpstan-import-type<\/code>&nbsp;<\/h3>\n\n\n\n<p>This release improves PhpStorm\u2019s PHPStan annotation support, introducing code completion for array shape aliases in <code>@phpstan-type<\/code> and <code>@phpstan-import-type<\/code>. Using the <a href=\"https:\/\/phpstan.org\/writing-php-code\/phpdoc-types#local-type-aliases\" target=\"_blank\" rel=\"noopener\">local type aliases<\/a> defined in PHPDoc\u2019s <code>@phpstan-type<\/code> annotation (or referenced in the <code>@phpstan-import-type<\/code> annotation), the IDE autocompletes array keys in class bodies.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1444\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/phpstan_type_code_completion.png\" alt=\"\" class=\"wp-image-558760\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Support for nested variables in <code>.env<\/code> files<\/h3>\n\n\n\n<p>Version 2025.1 extends PhpStorm\u2019s <code>.env<\/code> file support to include <a href=\"https:\/\/github.com\/vlucas\/phpdotenv?tab=readme-ov-file#nesting-variables\" target=\"_blank\" rel=\"noopener\">nested variables<\/a> syntax. Code completion, navigation between declarations and usages, inspections, and quick-fixes now also work for environment variables wrapped in <code>${\u2026}<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/nested_variables_in_dotenv_files.gif\" alt=\"\" class=\"wp-image-558771\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Debugging<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Option to install Xdebug from the <em>CLI Interpreters<\/em> window<\/h3>\n\n\n\n<p>PhpStorm simplifies Xdebug setup in many ways, including by detecting when the debugger is not installed for the PHP interpreter that\u2019s in use. If Xdebug is missing, in PhpStorm 2025.1, you can have it downloaded and installed automatically right from the<strong> <\/strong><em>CLI Interpreters<\/em> dialog.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/download_xdebug_extention.gif\" alt=\"\" class=\"wp-image-558782\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Xdebug Helper browser extension now maintained by JetBrains<\/h3>\n\n\n\n<p>JetBrains has teamed up with <a href=\"https:\/\/github.com\/FraserChapman\" target=\"_blank\" rel=\"noopener\">Fraser Chapman<\/a> to publish and maintain an official Xdebug toggler for <a href=\"https:\/\/chromewebstore.google.com\/detail\/xdebug-extension\/aoelhdemabeimdhedkidlnbkfhnhgnhm\" target=\"_blank\" rel=\"noopener\">Chrome<\/a> and <a href=\"https:\/\/addons.mozilla.org\/en-GB\/firefox\/addon\/xdebug-helper-by-jetbrains\/\" target=\"_blank\" rel=\"noopener\">Firefox<\/a> browsers. The Xdebug Helper by JetBrains extension is open source and developed by Fraser, but committing to its testing and release allows us to make sure you are provided with reliable tools for interruption-free debugging.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WordPress<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress support on project startup<\/h3>\n\n\n\n<p>In order to provide support for WordPress projects, PhpStorm needs to know the path to the WordPress core installation on your machine. While you were previously prompted to specify this path manually on project startup, starting with version 2025.1, PhpStorm attempts to discover the path and automatically enables support for the WordPress framework.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/enable_wp_support.png\" alt=\"\" class=\"wp-image-558793\"\/><\/figure>\n\n\n\n<p>If it\u2019s unable to detect the path, the IDE will open the <em>PHP | Frameworks<\/em> settings page so you can provide the required information.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">JetBrains AI<\/h2>\n\n\n\n<p>Alongside PhpStorm, JetBrains AI Assistant has received a major update. Now, <strong>all JetBrains AI features are available for free in PhpStorm<\/strong> and other JetBrains IDEs, offering unlimited access to code completion and local model support, with credit-based limits for other features.<\/p>\n\n\n\n<p>We&#8217;re also introducing a <a href=\"https:\/\/www.jetbrains.com\/ai-ides\/buy\/\" target=\"_blank\" rel=\"noopener\"><strong>new subscription system<\/strong><\/a> that makes it easy to scale up as needed with the AI Pro and AI Ultimate tiers.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/ai-ides\" target=\"_blank\" rel=\"noopener\">Learn more<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Get Started with JetBrains AI Assistant in PhpStorm\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lTr06V9uyts?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Expanded selection of LLMs in chat<\/h3>\n\n\n\n<p>The AI model selection in the chat has just been expanded! Now, you can take full control of your AI experience by choosing from the latest and most advanced language models, including <strong>Claude 3.7 Sonnet<\/strong> and <strong>Gemini 2.0 Flash<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"795\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/llms.png\" alt=\"\" class=\"wp-image-561895\"\/><\/figure>\n\n\n\n<p>And we\u2019re not stopping here! JetBrains is committed to continuously integrating AI models to ensure you have access to the most up-to-date AI technologies.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Improved context awareness in chat<\/h3>\n\n\n\n<p>Local and cloud LLMs can now leverage PhpStorm\u2019s indexing data on the PHP methods used in your project. This allows AI Assistant to improve the quality and relevance of code snippets generated in the chat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Offline mode: Work with local models<\/h3>\n\n\n\n<p>AI Assistant gives you the flexibility to work with local models offline or leverage cloud-based AI processing. With the new offline mode, you can now work without an internet connection while still benefiting from AI-powered coding assistance. Use local models via Ollama or LM Studio for chat, code generation, commit messages, inline documentation, and more.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/ai_local_models.png\" alt=\"\" class=\"wp-image-558052\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Multi-file changes in edit mode <kbd>Beta<\/kbd><\/h3>\n\n\n\n<p>Editing multiple files has never been easier! AI Assistant now supports multi-file edits in the chat, suggesting changes across your project while leveraging retrieval-augmented generation (RAG) to locate the most relevant files. Reduce repetitive tasks and implement modifications across multiple files with a single interaction.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/ai_edit_mode.png\" alt=\"\" class=\"wp-image-558063\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Apply snippets from chat<\/h3>\n\n\n\n<p>Now, when the AI chat suggests a code snippet, you can use the <em>Apply<\/em> button to automatically find the optimal place to insert the newly generated code \u2013 no more manual copy-pasting. This feature significantly streamlines your workflow.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1444\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/ai_apply_to_opened_file.png\" alt=\"\" class=\"wp-image-558074\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Smarter AI context awareness<\/h3>\n\n\n\n<p>AI Assistant now understands your entire project better, using advanced RAG to surface the most relevant files, methods, and classes. In addition, the context now includes recently accessed files, making interactions even more relevant to your workflow. Because you can now also add or remove attachments sent as context, you maintain full control over the AI\u2019s context.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exclude files from AI context<\/h3>\n\n\n\n<p>You can further enhance your control over what AI Assistant sees by configuring an <code>.aiignore<\/code> file. This allows you to prevent JetBrains AI from accessing specific files or folders, ensuring that sensitive information is never processed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2482\" height=\"1396\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/6-aiignore.png\" alt=\"\" class=\"wp-image-558085\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Web search from chat<\/h3>\n\n\n\n<p>With the new <code>\/web<\/code><strong> <\/strong>command, AI Assistant can now fetch documentation, troubleshooting tips, and the latest technical resources directly from the web \u2013 right inside your chat window. No more switching tabs or searching manually!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1396\" height=\"606\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/4-web-search.png\" alt=\"\" class=\"wp-image-558096\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Attached schemas in the <em>Explain with AI<\/em> chat<\/h3>\n\n\n\n<p>Explanations are more effective when they use all the relevant context. Now, when you ask AI Assistant to explain a query, the corresponding schema is automatically attached to the chat.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXftbErFLonYBmStO2r8KrkJIHSSs8ydAQi1GOeY565uphbOcyLn18baKsMSDR6tFILRxCFwRshr4th1Vtg4m3_wVXJBQ1dKfySS_MS834rwBxti0PgWk1cafGgj2qFgmdZAwyv8tA.png\" style=\"width: 1280px;\"><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/ai-ides\/#getstarted\" target=\"_blank\" rel=\"noopener\">Try AI Assistant<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frontend<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Improved Vue and Nuxt support<\/h3>\n\n\n\n<p>PhpStorm now makes it easier to start new Vue projects with Nuxt CLI (<code>nuxi<\/code>) integration in the <em>New Project<\/em> wizard, allowing for a smoother setup experience.<\/p>\n\n\n\n<p>We&#8217;ve also improved support for Vue\u2019s global properties by correctly resolving custom properties added through module augmentation. Additionally, issues with autocomplete and auto-import for packaged components declared with <code>__VLS_WithTemplateSlots<\/code> have been fixed, ensuring a more reliable development experience in Vue projects.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/WS251-Nuxt-new-min.png\" alt=\"\" class=\"wp-image-558804\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Better monorepo support<\/h3>\n\n\n\n<p>Working in a monorepo just got smoother! PhpStorm now respects Prettier configs per subproject, offers smarter auto-imports and path alias resolution via improved <code>exports<\/code> handling, and delivers faster code completion and navigation in large Nx workspaces. Enjoy a more consistent and efficient coding experience across all your projects.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/WS251-Prettier-settings-min.png\" alt=\"\" class=\"wp-image-558815\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">User experience<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">New terminal architecture <code><kbd>Beta<\/kbd><\/code><\/h3>\n\n\n\n<p>The 2025.1 release introduces a reworked terminal architecture, which is available in Beta. The terminal now runs on a stable, standards-compliant core and uses the IDE\u2019s editor to render the UI. This change lets us introduce new features while preserving compatibility and performance across various platforms, whether local or remote. Get more details about our plans and progress in this <a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/03\/jetbrains-terminal-a-new-architecture\/\">blog post<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Terminal.png\" alt=\"\" class=\"wp-image-558826\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Search functionality in Markdown previews<\/h3>\n\n\n\n<p>In PhpStorm 2025.1, you can search within Markdown previews. Since <code>README.md<\/code> previews are often the first thing you see when opening or cloning a project, this update makes it easier to find key information instantly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Search-in-md-preview.gif\" alt=\"\" class=\"wp-image-558837\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Native OS file dialogs on Windows&nbsp;<\/h3>\n\n\n\n<p>PhpStorm now defaults to using native Windows file dialogs instead of the IDE\u2019s custom implementation. This gives you a more familiar experience when opening or saving files. If you prefer the previous behavior, you can restore it in <em>Advanced Settings | User Interface<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Native-OS-file-chooser_1.png\" alt=\"\" class=\"wp-image-561225\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/ps_Native-OS-file-chooser_2.png\" alt=\"\" class=\"wp-image-558899\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Commit experience updates<\/h3>\n\n\n\n<p>We are refining the non-modal commit workflow, the default built-in option, in response to the extensive feedback we received during the Early Access Program. The modal commit interface is becoming a <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/26647-git-modal-commit-interface\" target=\"_blank\" rel=\"noopener\">plugin<\/a>, which can be activated in <em>Settings | Advanced Settings | Version Control. Git.<\/em> In version 2025.1, the plugin will be bundled with the IDE, so you\u2019ll be able to continue using the interface without having to install it manually.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1500\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Version-Control-Modal.png\" alt=\"\" class=\"wp-image-561236\"\/><\/figure>\n","protected":false},"author":1413,"featured_media":561134,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[8674,477],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/phpstorm\/558008"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/phpstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/phpstorm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1413"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=558008"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/phpstorm\/558008\/revisions"}],"predecessor-version":[{"id":603243,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/phpstorm\/558008\/revisions\/603243"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/561134"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=558008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=558008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=558008"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=558008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}