WordPress 자체 업데이트가 생기고 난 뒤에 정말 편해서 잘 쓰고 있다. 그런데 이번에 5.6.1 버전으로 업데이트 하려는데 자꾸 중간에 아래 메시지만 나오고 업데이트가 안되었다.
Downloading update from https://downloads.wordpress.org/release/wordpress-5.6.1-new-bundled.zip…
오랜만에 수동 업데이트를 하려니 엄두가 안나서 자동 업데이트가 안되는 원인을 찾다 강제로 자동 업데이트를 했다.
강제로 자동 업데이트
화면에 나오는 메시지로는 어쨌거나 다운로드부터 문제가 생겼다. 저 메시지를 찍는 부분은 wp-admin/includes/class-wp-upgrader.php 이다. 파일 다운로드 자체는 wp-admin/includes/file.php 에서 한다.
download_url 함수에서 하는데 임시 경로에 파일을 만든다. 일단 다운로드가 잘 되나 확인하려고 wp-content/temp 디렉토리를 만들고 777 권한 설정을 했다. 그리고 wp-config.php 에서 임시 경로를 바꿨다.
define('WP_TEMP_DIR', dirname(__FILE__) . '/wp-content/temp/');
다시 업데이트를 눌렀고 임시 디렉토리에 파일이 생긴것도 확인했다. PC에서도 다운로드 받아 크기가 같은지 확인 했다.
파일 다운로드는 되었으나 대략 16MB로 시간이 오래 걸려서 서버에서 응답을 끊은 것 같았다. 그래서 이미 임시 디렉토리에 파일을 받았으니 받아 놓은 파일을 쓰도록 wp-admin/includes/class-wp-upgrader.php 파일을 고쳤다.
//$download_file = download_url( $package, 300, $check_signatures );
$download_file = trailingslashit( WP_TEMP_DIR ) . "임시 파일 이름";
이렇게 고치고 다시 업데이트를 했다. 파일이 이미 있기 때문에 바로 업데이트가 되었고, 수정했던 파일은 업데이트가 되면서 자동으로 원본으로 바뀌었다. wp-config.php에서 임시 디렉토리 설정과 임시 디렉토리는 직접 지웠다.
그런데 위에 적은 것처럼 시간이 오래 걸려서 응답이 끊긴게 원인이란걸 이 방법을 하고 나서야 깨닳았다.
진짜 원인 해결
Tools -> Site health 에 들어가면 여러가지 정보를 보여준다. 여기에서 Info -> Server에 다음 값이 있다.
PHP time limit 30
WordPress 파일을 다운로드 받고 검사하고 이 과정에서 시간이 너무 오래 걸려서 php 실행이 중간에 멈췄다.
해결 방법은 wp-config.php 파일에서 시간을 늘려주면 된다. 그런데 나는 이미 위에 적은 강제로 자동 업데이트를 해버려서 확인은 못했다. 적당히 180초로 했는데 이것도 모자라면 더 늘리면 된다.
set_time_limit(180);