Usually it’s a permission issue. You need webserver ownership (www/www-root or something else depending on your server) for all files:

chown -R www.www public_html

You also need to change permissions of your files and add write permissions for user and group:

chmod -R ug+w public_html/

You may also need to add the following line to wp-config.php:

define( 'FS_METHOD', 'direct' );