Tôi vừa cập nhật lên wp-cli 0.14.1 hôm nay và một lần nữa gặp sự cố MySQL. Tôi đang dùng Windows, Wamperver và Cygwin.
Khi tôi cập nhật lần đầu tiên vào phiên bản cuối cùng (0.14.0), tôi đã gặp một vấn đề tương tự và cố gắng tìm và sử dụng thông tin từ một cuộc thảo luận github rằng rất có thể là do "biến_order" trong php.ini. Tôi đã nhận xét rằng trong tập tin ini của tôi để buộc mặc định của EGPCS thay vì GPCS. Điều đó đã chăm sóc nó. Đã có đề cập đến việc sửa lỗi này trong phiên bản tiếp theo.
Bây giờ tôi đã cập nhật lên 0.14.1 và khi cố chạy "wp core config ...." để tạo tệp wp-config.php tôi "đang gặp lỗi dòng lệnh
MYSQL_PWD is not recognized as an internal or external command.
Tôi quay lại chuỗi github và thấy rằng scribu đã tạo ra sự thay đổi được thảo luận. Tôi theo liên kết đến nó để xem nó có làm sáng tỏ không. Tôi thấy sự thay đổi trên dòng 328 nhưng không biết tôi nên thử những gì bây giờ vì sự thay đổi đó dường như là điều gây ra vấn đề của tôi.
Chỉ cần FYI: Tôi không gặp vấn đề gì khi sử dụng mysql từ dòng lệnh DOS hoặc Cygwin, cả hai đều tham chiếu cùng một tệp thực thi và hoạt động chính xác; hoàn hảo.
Bất kỳ trợ giúp sẽ được đánh giá cao.
CẬP NHẬT 03/08/2014
GHI CHÚ: (1) Tôi không quan tâm đến việc tiết lộ tên người dùng hoặc mật khẩu vì chúng là tạm thời và đây là một trong những máy cục bộ của tôi. (2) Bạn sẽ thấy tôi đang sử dụng tệp phar trong phiên gỡ lỗi này. Điều tương tự chính xác xảy ra khi sử dụng phiên bản "đã cài đặt" "wp" trong thư mục bin.
Đây là phiên gỡ lỗi trong PHPStorm, trong đó tôi đã bắt đầu với lệnh wp-cli này:
Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_
Điểm dừng trong utils.php được đặt cho dòng 331:
$final_cmd = $cmd . assoc_args_to_str( $assoc_args );
tạo lệnh cuối cùng được trao cho dòng 333 để thực thi:
$proc = proc_open( $final_cmd, $descriptors, $pipes );
Đây là hình ảnh gỡ lỗi với trạng thái của các biến ngay trước khi xử lý các dòng 334-339 để thoát wp-cli và tạo thông báo lỗi trên dòng lệnh bash:
Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_
'MYSQL_PWD' is not recognized as an internal or external command,
operable program or batch file.
Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$
Tôi biết wp-cli là phần mềm được xây dựng tốt nên rất có thể tôi đang thiếu thứ gì đó trên đường đi. (Để dòng lệnh và PHPStorm hoạt động cùng nhau rất tốn thời gian vì nó là công cụ mới đối với tôi.) Tôi sẽ giữ nó khi thời gian cho phép, nhưng nếu ai đó có bất kỳ manh mối nào thì nó sẽ giúp ích.
CẬP NHẬT: 29/03/14
Cảm ơn vì vé và hợp nhất scribu, nhưng tiếc là nó không khắc phục được vấn đề. Tôi đang nhận được cùng một lỗi.
Lúc đầu, tôi đã bối rối sau khi tải lại tệp phar vì tôi tìm thấy mã chính xác như trước khi vé của bạn và hợp nhất. Một khoảnh khắc WTF. Vì vậy, tôi đã xem thư mục bản dựng trên GitHub và thấy rằng tệp đó được ghi ngày 2 ngày trước khi hợp nhất của bạn để nó không bao gồm các thay đổi.
Tôi đã chộp lấy hàng đêm, tải lại dự án và có những thay đổi với putenv () nhưng Bash đang đưa ra lỗi tương tự như trước đây.
Có vẻ như sự thay đổi này wp-cli đã không tương thích với Cygwin.
CẬP NHẬT: ngày 19 tháng 4 năm 2014
Phiên bản 0.15.0 được phát hành vào ngày 4/15 vì vậy tôi đã cài đặt nó và chạy tất cả các lệnh trên. wp-cli hoạt động như đã làm trong các phiên bản <0.14.1. Tôi so sánh 0.14.1 với 0.15.0 và tìm thấy như sau.
Các dòng 326-339 của v0.14.1 đọc:
if ( isset( $assoc_args['pass'] ) ) {
$cmd = esc_cmd( 'MYSQL_PWD=%s ', $assoc_args['pass'] ) . $cmd;
unset( $assoc_args['pass'] );
}
$final_cmd = $cmd . assoc_args_to_str( $assoc_args );
$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
exit(1);
$r = proc_close( $proc );
if ( $r ) exit( $r );
Các dòng 326-342 trong v0.15.0 hiện đang đọc:
$pass = $assoc_args['pass'];
unset( $assoc_args['pass'] );
$old_pass = getenv( 'MYSQL_PWD' );
putenv( 'MYSQL_PWD=' . $pass );
$final_cmd = $cmd . assoc_args_to_str( $assoc_args );
$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
exit(1);
$r = proc_close( $proc );
putenv( 'MYSQL_PWD=' . $old_pass );
if ( $r ) exit( $r );
Điều này đã khắc phục vấn đề. wp-cli hiện đang làm việc lại với Cygwin, ít nhất là các lệnh tôi đã sử dụng ở đây cũng như một vài lệnh khác liên quan đến việc vượt qua điểm này - cài đặt.