Thêm thư mục vào Biến môi trường PATH trong Windows


525

Tôi đang cố gắng thêm C:\xampp\phpvào PATHbiến môi trường hệ thống của mình trong Windows.

Tôi đã thêm nó bằng hộp thoại Biến môi trường.

Nhưng khi tôi gõ vào bảng điều khiển của mình:

C:\>path

Nó không hiển thị C:\xampp\phpthư mục mới :

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

Tôi có hai câu hỏi:

  1. Tại sao điều này xảy ra? Có điều gì tôi đã làm sai?
  2. Ngoài ra, làm cách nào để thêm thư mục vào PATHbiến của tôi bằng bàn điều khiển (và lập trình, với tệp bó)?

43
Đây là chủ đề vì đây là câu hỏi về 'công cụ lập trình viên thường sử dụng'. Nếu bạn phát triển trên Windows và bạn không bao giờ cần phải sửa đổi PATH, tôi sẽ ngạc nhiên. Để thỏa mãn mong muốn liên quan đến lập trình, tôi đã nhấn mạnh câu trả lời được bình chọn cao nhất đã chỉ ra: Bạn có thể thực hiện việc này theo chương trình thông qua bảng điều khiển (hoặc thông qua tệp bó).
George Stocker

1
cảm ơn vì đã xem xét @GeorgeStocker vâng tôi đã làm điều đó bằng lập trình và tôi không có ý tưởng rằng tôi cần phải đăng nhập lại sau khi áp dụng các thay đổi trong phiên giao diện điều khiển. (và tôi nghĩ chỉ có trong trường hợp của tôi) nhưng câu trả lời được bình chọn cao nhất thường trả lời câu hỏi
Netorica

1
@George - đã đồng ý, nhưng như hiện tại, câu hỏi này được viết cho Super User chứ không phải Stack Overflow. Super User sẽ cung cấp trợ giúp với các cấu hình máy chủ web để sử dụng cá nhân. Stack Overflow dành cho các câu hỏi lập trình.
jww

1
Thoát và mở bảng điều khiển mới ... Nếu bạn đang sử dụng bash, điều đó có thể yêu cầu khởi động lại hệ thống trước khi các thay đổi vẫn còn, tùy thuộc vào cách thức / những gì bạn đang sử dụng ,.
Tracker1

Câu trả lời:


148

Điều này chỉ sửa đổi sổ đăng ký. Một quy trình hiện tại sẽ không sử dụng các giá trị này. Một quy trình mới sẽ làm như vậy nếu nó được bắt đầu sau thay đổi này không kế thừa môi trường cũ từ cha mẹ của nó.

Bạn đã không chỉ định cách bạn bắt đầu phiên giao diện điều khiển. Cách tốt nhất để đảm bảo điều này là thoát khỏi shell lệnh và chạy lại nó. Sau đó, nó sẽ kế thừa PATH cập nhật.


9
Hmm, không, nó thực sự chỉ sửa đổi sổ đăng ký. Thật rõ ràng khi thực hiện điều này trong hộp thoại Bảng điều khiển thay vì dấu nhắc lệnh bằng lệnh PATH. Bạn có thể quan sát những gì nó thực hiện dễ dàng với Trình theo dõi tiến trình của SysIternals, nếu bạn quan tâm. Sử dụng PATH không giống nhau, mọi thay đổi bạn thực hiện sẽ bị mất khi đóng bàn điều khiển. SETX là một cách để thực hiện các thay đổi liên tục, như hộp thoại.
Hans Passant

3
Chính xác. Bạn luôn phải khởi động lại phiên giao diện điều khiển của mình trước khi nó chọn các biến môi trường mới.
BrainSlugs83

1
Phiên giao diện điều khiển có cập nhật các biến nếu WM_SETTINGCHANGEtin nhắn được gửi từ ứng dụng không? stackoverflow.com/a/8353361
John_West

Về mặt lý thuyết là có thể, không có triển khai CRT thực tế nào tôi biết thực sự làm điều này. Nhà thám hiểm nào.
Hans Passant

1
Thông tin cơ bản chứng thực điều này: blog.msdn.microsoft.com/oldnewthing/20150915-00/?p=91591
Euro Micelli

960

lựa chọn 1

Sau khi bạn thay đổi PATHvới GUI, hãy đóng và mở lại cửa sổ giao diện điều khiển.

Điều này hoạt động vì chỉ các chương trình bắt đầu sau khi thay đổi sẽ thấy mới PATH.

Lựa chọn 2

Thực hiện lệnh này trong cửa sổ lệnh bạn đã mở:

set PATH=%PATH%;C:\your\path\here\

Lệnh này nối C:\your\path\here\vào hiện tại PATH.

Phá vỡ nó:

  • set- Lệnh chỉ thay đổi các biến môi trường của cmd cho phiên cmd hiện tại ; các chương trình khác và hệ thống không bị ảnh hưởng.
  • PATH=- Biểu thị đó PATHlà biến môi trường được thay đổi tạm thời.
  • %PATH%;C:\your\path\here\- Phần %PATH%mở rộng đến giá trị hiện tại của PATH, và ;C:\your\path\here\sau đó được nối với nó. Điều này trở thành mới PATH.

16
@Ilya: Ý tôi là để bạn mở cửa sổ giao diện điều khiển sau khi đường dẫn được thay đổi trong MyComputer-> Properties-> Advanced-> Env Biến-> Đường dẫn. Một số ứng dụng Windows sẽ truyền bá các thay đổi về môi trường sau khi chúng bắt đầu và một số thì không. WinXP cmd.exe thì không.
JimR

7
Nếu tôi thoát khỏi bàn điều khiển và tôi chạy lại, tôi phải đặt lại đường dẫn. Bất kỳ ý tưởng làm thế nào để thay đổi này vĩnh viễn?
David Wong

2
@David Wong Nếu bạn theo dõi "Máy tính của tôi"> "Thuộc tính"> "Nâng cao"> "Biến môi trường"> "Đường dẫn". và thêm thư mục vào cuối chuỗi đó, nó sẽ ở lại. Chỉ cần chắc chắn để mở giao diện điều khiển sau khi thực hiện thay đổi.
theB3RV

yup @ theB3RV, đó chỉ là một cách dài để làm điều gì đó đơn giản. Thật kỳ lạ khi không có lệnh liên tục nào có thể được gõ trong bảng điều khiển
David Wong

12
@David Wong Chỉ tìm thấy "SETX là một cách để thực hiện các thay đổi liên tục, như hộp thoại." vì vậy lệnh
SETX

202

CẢNH BÁO: Giải pháp này có thể phá hủy PATH của bạn và tính ổn định của hệ thống. Là một tác dụng phụ, nó sẽ hợp nhất PATH của người dùng và hệ thống của bạn và cắt bớt PATH thành 1024 ký tự. Tác dụng của lệnh này là không thể đảo ngược. Tạo một bản sao lưu của PATH trước. Xem các bình luận để biết thêm thông tin.

Đừng mù quáng sao chép và dán cái này. Sử dụng cẩn thận.

Bạn có thể thêm vĩnh viễn một đường dẫn đến PATHbằng setxlệnh:

setx /M path "%path%;C:\your\path\here\"

Xóa /Mcờ nếu bạn muốn đặt người dùng PATHthay vì hệ thống PATH.

Ghi chú:

  • Các setxlệnh chỉ có sẵn trong Windows 7 và sau đó.
  • Bạn nên chạy lệnh này từ một dấu nhắc lệnh nâng cao.

  • Nếu bạn chỉ muốn thay đổi nó cho phiên hiện tại, hãy sử dụng bộ .


7
SETX /M path "%path%;C:\Program Files (x86)\Git\bin\"để đặt giá trị PATH ở cấp độ máy
Lu55

7
Tại sao đây không phải là câu trả lời được chấp nhận? Tôi tưởng tượng hầu hết mọi người sẽ muốn thiết lập con đường của họ vĩnh viễn ...
Peter Gordon


9
CẢNH BÁO : Do sử dụng %PATH%biến, lệnh này hợp nhất các biến env toàn cầu với biến người dùng. Phải không? Điều này có thể tạo ra các tác dụng phụ không mong muốn, đặc biệt là với công tắc / M
FF_Dev

4
CẢNH BÁO 2: Các %PATH%biến thể không được đồng bộ với các biến môi trường vì nó được nạp tại buổi ra mắt của lệnh nhanh chóng và không bao giờ nạp lại sau đó (ngay cả khi thực hiện lệnh setx). Ngoài ra, nó có thể đã được thay đổi cục bộ bởi các tập lệnh được thực hiện trước đó.
FF_Dev

66

Bạn không cần bất kỳ sethoặc setxlệnh nào, chỉ cần mở terminal và gõ:

PATH

Điều này cho thấy giá trị hiện tại của biến PATH. Bây giờ bạn muốn thêm thư mục vào nó? Đơn giản chỉ cần gõ:

PATH %PATH%;C:\xampp\php

Nếu vì bất kỳ lý do nào bạn muốn xóa biến PATH (không có đường dẫn nào hoặc xóa tất cả các đường dẫn trong đó), hãy nhập:

PATH ;

Cập nhật

Giống như Danial Wilson đã lưu ý trong bình luận bên dưới, nó chỉ đặt đường dẫn trong phiên hiện tại. Để đặt đường dẫn sử dụng vĩnh viễn setxnhưng hãy lưu ý, mặc dù điều đó đặt đường dẫn vĩnh viễn nhưng KHÔNG trong phiên hiện tại, vì vậy bạn phải bắt đầu một dòng lệnh mới để xem các thay đổi, thông tin thêm ở đây .

Để kiểm tra xem một biến môi trường có tồn tại hay xem giá trị của nó, hãy sử dụng lệnh ECHO:

echo %YOUR_ENV_VARIABLE%

1
Nó hoạt động :) làm thế nào về điều đó! 'PATH% PATH%;' Tôi có thể nhớ điều đó
Dustin Woodard

12
Tôi nghĩ rằng điều này chỉ hoạt động cho ví dụ của phiên cmd, sử dụng setx để thay đổi vĩnh viễn
Daniel Wilson

2
Đừng bao gồm các trích dẫn với điều này. Ví dụ: gọi PATH %PATH%;C:\Program Files\...thay vìPATH "%PATH%;C:\Program Files\..."
icc97

4
Đừng sử dụng setx! Bạn có nguy cơ cắt ngắn biến đường dẫn của mình, mất nhiều đường dẫn khác mà bạn đã dành thời gian thiết lập. Chú ý cảnh báo ở trên.
STWilson

1
@STWilson, quá muộn để xem bình luận của bạn!
Tây Dương

48

Tôi sẽ sử dụng PowerShell thay thế!

Để thêm thư mục vào PATH bằng PowerShell, hãy làm như sau:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

Để đặt biến cho tất cả người dùng, toàn máy, dòng cuối cùng phải là:

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

Trong tập lệnh PowerShell, bạn có thể muốn kiểm tra sự hiện diện của mình C:\xampp\phptrước khi thêm vào PATH (trong trường hợp nó đã được thêm trước đó). Bạn có thể bọc nó trong một ifđiều kiện.

Vì vậy, đặt tất cả cùng nhau:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}

Vẫn còn tốt hơn, người ta có thể tạo ra một chức năng chung. Chỉ cần cung cấp thư mục bạn muốn thêm:

function AddTo-Path{
param(
    [string]$Dir
)

    if( !(Test-Path $Dir) ){
        Write-warning "Supplied directory was not found!"
        return
    }
    $PATH = [Environment]::GetEnvironmentVariable("PATH")
    if( $PATH -notlike "*"+$Dir+"*" ){
        [Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
    }
}

Bạn có thể làm cho mọi thứ tốt hơn bằng cách đánh bóng. Ví dụ, sử dụng Test-Pathđể xác nhận rằng thư mục của bạn thực sự tồn tại.


3
để gọi SetEnvironmentVariablevới Machinetham số bạn cần mở PowerShell với quyền quản trị viên
InsOp

Thật đáng thất vọng khi lớp vỏ "sức mạnh" này không nhận ra% userprofile% hay $ userprofile .. nhưng một lần nữa, đây là cửa sổ mà chúng ta đang nói đến
abbood

3
@abbood Những gì bạn đang tìm kiếm là $env:userprofile.
nyuszika7h

3
Bạn cũng nên chỉ định một trong hai userhoặc machinetrong cuộc gọi của GetEnvironmentVariable. Nếu không, $PATHsẽ chứa giá trị của cả người dùng và phần máy của sổ đăng ký, điều này sẽ làm nổ tung biến đường dẫn một cách không cần thiết khi lưu trữ lại.
René Nyffalanger 23/2/19

35

CÀI ĐẶT an toàn hơn

Gật đầu với tất cả các ý kiến ​​về câu trả lời ban đầu của @ NafscriptSETX .

  • SETXtheo mặc định sẽ cập nhật người dùng của bạn đường dẫn .
  • SETX ... /Msẽ cập nhật hệ thống của bạn đường dẫn .
  • %PATH% chứa đường dẫn hệ thống với đường dẫn người dùng được nối thêm

Cảnh báo

  1. Sao lưu của bạnPATH -SETX sẽ cắt bớt rác của bạn dài hơn 1024 ký tự
  2. Đừng gọi SETX %PATH%;xxx - thêm đường dẫn hệ thống vào đường dẫn người dùng
  3. Đừng gọi SETX %PATH%;xxx /M - thêm đường dẫn người dùng vào đường dẫn hệ thống
  4. Sử dụng tập tin quá nhiều có thể gây mù 1

Trang ss64 SETX có một số ví dụ rất hay. Điều quan trọng là nó chỉ đến nơi các khóa đăng ký là SETXvsSETX /M

Biến người dùng:

HKCU\Environment

Biến hệ thống:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Cách sử dụng cấu trúc

Nối với người dùng PATH

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

Nối vào hệ thống PATH

append_system_path.cmd. Phải được chạy như quản trị viên.

(về cơ bản là giống nhau ngoại trừ với một Keycông cụ SETX /Msửa đổi và khác nhau )

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

Lựa chọn thay thế

Cuối cùng, có khả năng là một phiên bản cải tiến có tên là SETENV được đề xuất bởi trang ss64 SETX, phân tách cài đặt các biến môi trường của người dùng hoặc hệ thống.


1. Không đúng sự thật


24

Đi dự tiệc muộn - nhưng tiện dụng nếu bạn đã có trong thư mục bạn muốn thêm vào PATH.

set PATH=%PATH%;%CD%

chỉnh sửa: theo nhận xét - hoạt động với các cửa sổ cmd tiêu chuẩn nhưng không phải trong powershell.

Đối với quyền hạn, %CD%tương đương là[System.Environment]::CurrentDirectory


1
Powershell của tôi nói rằng% CD% không được công nhận.
Paulo Matos

@PauloMatos Có thể thử sử dụng[System.Environment]::CurrentDirectory
nclord

4

Ngoài tất cả các câu trả lời, nếu bạn muốn có một công cụ GUI đẹp để chỉnh sửa các biến môi trường cửa sổ của mình, bạn có thể sử dụng Trình chỉnh sửa môi trường nhanh

thử nó! Nó an toàn để sử dụng và tuyệt vời!

http://www.rapidee.com/vi/


2
Windows 10 đã cải thiện đáng kể trình soạn thảo biến môi trường Path. Chỉ mất 20 năm để hoàn thành nó.
icc97

4
  • thay đổi dòng lệnh sẽ không vĩnh viễn, sẽ bị mất khi đóng giao diện điều khiển.
  • Đường dẫn hoạt động như lần đầu tiên đến trước được phục vụ.
  • Bạn có thể muốn ghi đè các thực thi đã được bao gồm khác. Chẳng hạn, nếu bạn đã có một phiên bản khác trên đường dẫn của mình và bạn muốn thêm phiên bản khác mà không thực hiện thay đổi vĩnh viễn trên đường dẫn, bạn nên đặt thư mục ở đầu lệnh.

Để ghi đè các tập tin thực thi đã bao gồm;

đặt PATH = C: \ xampp \ php;% PATH%;


2

Kiểm tra các đề xuất trên trên Windows 10 LTSB và với cái nhìn thoáng qua về các phác thảo "trợ giúp" (có thể được xem khi nhập 'lệnh /?' Trên cmd), đưa tôi đến kết luận rằng lệnh PATH thay đổi biến môi trường hệ thống Các giá trị đường dẫn chỉ dành cho phiên hiện tại, nhưng sau khi khởi động lại, tất cả các giá trị được đặt lại về mặc định - giống như trước khi sử dụng lệnh PATH.

Mặt khác, sử dụng lệnh SETX với các đặc quyền quản trị mạnh mẽ hơn, nó thay đổi các giá trị đó thành tốt (hoặc ít nhất là cho đến lần tiếp theo lệnh này được sử dụng hoặc cho đến lần tiếp theo các giá trị đó được thao tác GUI thủ công ...).

Nhưng để rõ ràng, tôi nghĩ rằng việc chia sẻ ở đây cách sử dụng cú pháp SETX tốt nhất có thể giúp tôi một ngày nào đó:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

nên tránh bất kỳ dấu bằng nào '=' và đừng lo lắng về khoảng trắng! không cần chèn thêm bất kỳ dấu ngoặc kép nào cho đường dẫn chứa khoảng trắng bên trong nó - dấu phân tách ';' thực hiện công việc.

Từ khóa PATH theo sau SETX xác định tập hợp các giá trị nào sẽ được thay đổi giữa các giá trị Biến môi trường hệ thống và% PATH% (từ PATH được bao quanh bởi dấu phần trăm) bên trong dấu ngoặc kép, báo cho HĐH rời khỏi hiện tại Giá trị PATH như hiện tại và thêm đường dẫn sau (đường dẫn theo dấu phân tách ';') vào các giá trị hiện có.

HTH


2

Về điểm 2 Tôi đang sử dụng một tệp bó đơn giản đang cư trú PATHhoặc các biến môi trường khác cho tôi. Do đó, không có ô nhiễm của các biến môi trường theo mặc định. Tệp bó này có thể truy cập từ mọi nơi vì vậy tôi có thể gõ:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php

Đây là một sự khác biệt quan trọng giữa * nix-es và Windows. Lô chạy trong cùng một vỏ và thay đổi môi trường ở lại sau khi thoát (ở phạm vi phiên). Tuy nhiên, điều này cắt giảm cả hai cách: một tệp bó có thể xóa sạch môi trường của bạn. (BTW, trên * nix-es bạn chỉ cần có sourcemột tệp như vậy . mybatchfile).
Tomasz Gandor

Xin chào @ grzegorz-gajos, tôi đang tìm kiếm chính xác điều đó, liên kết của bạn để biết thêm chi tiết cung cấp 404. Có sự thay thế nào không?
devkabiir

Xin lỗi, nội dung từ liên kết không còn nữa. Tôi đã gỡ bỏ.
Grzegorz Gajos

1

Trong một dấu nhắc lệnh, bạn yêu cầu Cmd sử dụng dòng lệnh của Explorer bằng cách mở đầu nó bằng start.

Vì vậy start Yourbatchname.

Lưu ý bạn phải đăng ký như thể tên của nó là batchfile.exe.

Các chương trình và tài liệu có thể được thêm vào sổ đăng ký để nhập tên của chúng mà không có đường dẫn của chúng trong hộp thoại Bắt đầu - Chạy hoặc phím tắt cho phép Windows tìm thấy chúng.

Đây là một tập tin reg chung. Sao chép các dòng dưới đây vào một Tài liệu văn bản mới và lưu nó dưới dạng anyname.reg. Chỉnh sửa nó với các chương trình hoặc tài liệu của bạn.

Trong các đường dẫn, sử dụng \ để tách các tên thư mục trong các đường dẫn chính vì regedit sử dụng một \ để tách riêng các tên khóa của nó. Tất cả các tệp reg bắt đầu với REGEDIT4. Dấu chấm phẩy biến một dòng thành một nhận xét. Biểu tượng @ có nghĩa là gán giá trị cho khóa thay vì giá trị được đặt tên.

Các tập tin không phải tồn tại. Điều này có thể được sử dụng để đặt Word.exe để mở Winword.exe.

Đánh máy start batchfile sẽ bắt đầu iexplore.exe.

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

Bạn đã được nói về con đường trong một câu trả lời khác. Cũng xem doskey /?các macro cmd (chúng chỉ hoạt động khi gõ).

Bạn có thể chạy các lệnh khởi động cho CMD. Từ tài liệu tham khảo bộ công cụ Windows Recource Kit

Tự động khởi động

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

Sự miêu tả

Chứa các lệnh được thực thi mỗi khi bạn khởi động Cmd.exe.


1

Một thay thế tốt hơn cho Bảng điều khiển là sử dụng chương trình phần mềm miễn phí này từ sourceforge có tên Pathenator:

https://sourceforge.net/projects/pathenator/

Tuy nhiên, nó chỉ dành cho công nhân cho hệ thống có Dot.Net 4.0 trở lên như windows 7,8 hoặc 10.


1

Nếu bạn chạy lệnh cmd, nó sẽ cập nhật tất cả các biến hệ thống cho cửa sổ lệnh đó.


Trong một ý nghĩa. Điều gì xảy ra là bạn bắt đầu một phiên mới trong phiên hiện tại. Rời khỏi sẽ yêu cầu bạn gọi exithai lần, đầu tiên để đóng cái mới và sau đó đóng phiên đầu tiên (với môi trường cũ).
Farway

1

sử dụng đường dẫn từ gtools

nó làm mọi thứ một cách trực quan, vd:

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

Nó và hiển thị kết quả mà không cần phải sinh ra một cmd mới !


0
  1. Tôi đã cài đặt PHP thời gian đó. Trích xuất php-7 ***. Zip vào C: \ php \
  2. Sao lưu biến môi trường PATH hiện tại của tôi: chạy cmdvà thực thi lệnh:path >C:\path-backup.txt

  3. Nhận giá trị đường dẫn hiện tại của tôi vào tệp C: \ path.txt (cùng một cách)

  4. Sửa đổi path.txt (chắc chắn, độ dài đường dẫn của tôi là hơn 1024 ký tự, các cửa sổ đang chạy vài năm)
    • Tôi đã xóa các đường dẫn trùng lặp trong đó, như 'C: \ Windows; hoặc C: \ Windows \ System32; hoặc C: \ Windows \ System32 \ Wbem;- Tôi đã có hai lần.
    • Loại bỏ các đường dẫn chương trình gỡ cài đặt là tốt. Thí dụ: C: \ Tệp chương trình \ NonExistSoftware;
    • Bằng cách này, độ dài chuỗi đường dẫn của tôi <1024 :)))
    • ở cuối chuỗi đường dẫn thêm; C: \ php \
    • Sao chép giá trị đường dẫn chỉ vào bộ đệm với dấu ngoặc kép đóng khung! Ví dụ: "C: \ Windows; ****; C: \ php \" Không có PATH = nên ở đó !!!
  5. Mở Windows PowerShell với tư cách Quản trị viên.
  6. Chạy lệnh:

setx path "Here you should insert string from buffer (new path value)"

  1. Chạy lại thiết bị đầu cuối của bạn (Tôi sử dụng "Trình quản lý xa") và kiểm tra: php -v

0

Như tầm thường, tôi đã phải khởi động lại Windows khi gặp vấn đề này.

Tôi đang chạy Windows 7 x64. Tôi đã thực hiện cập nhật thủ công cho biến PATH của hệ thống. Điều này hoạt động tốt nếu tôi chạy cmd.exe từ menu stat. Nhưng nếu tôi gõ "cmd" trong thanh địa chỉ Windows Explorer, nó dường như tải PATH từ nơi khác, điều này không có thay đổi thủ công của tôi.

(Để tránh nghi ngờ - vâng, tôi đã đóng và chạy lại cmd một vài lần trước khi tôi khởi động lại và nó không giúp được gì.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.