Forbidden: You don't have permission to access / on this server, WAMP Error

前端 未结 5 2187
慢半拍i
慢半拍i 2020-12-05 15:23

I have installed wamp on windows 8 and received above error whenever I go to localhost or phpmyadmin. After much searching I found many ans

相关标签:
5条回答
  • 2020-12-05 15:31

    This could be one solution.

    public class RegisterActivity extends AppCompatActivity {
    
        private static final String TAG = "RegisterActivity";
        private static final String URL_FOR_REGISTRATION = "http://192.168.10.4/android_login_example/register.php";
        ProgressDialog progressDialog;
    
        private EditText signupInputName, signupInputEmail, signupInputPassword, signupInputAge;
        private Button btnSignUp;
        private Button btnLinkLogin;
        private RadioGroup genderRadioGroup;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            // Progress dialog
            progressDialog = new ProgressDialog(this);
            progressDialog.setCancelable(false);
    
            signupInputName = (EditText) findViewById(R.id.signup_input_name);
            signupInputEmail = (EditText) findViewById(R.id.signup_input_email);
            signupInputPassword = (EditText) findViewById(R.id.signup_input_password);
            signupInputAge = (EditText) findViewById(R.id.signup_input_age);
    
            btnSignUp = (Button) findViewById(R.id.btn_signup);
            btnLinkLogin = (Button) findViewById(R.id.btn_link_login);
    
            genderRadioGroup = (RadioGroup) findViewById(R.id.gender_radio_group);
            btnSignUp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    submitForm();
                }
            });
            btnLinkLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    Intent i = new Intent(getApplicationContext(),MainActivity.class);
                    startActivity(i);
                }
            });
        }
    
        private void submitForm() {
    
            int selectedId = genderRadioGroup.getCheckedRadioButtonId();
            String gender;
            if(selectedId == R.id.female_radio_btn)
                gender = "Female";
            else
                gender = "Male";
    
            registerUser(signupInputName.getText().toString(),
                    signupInputEmail.getText().toString(),
                    signupInputPassword.getText().toString(),
                    gender,
                    signupInputAge.getText().toString());
        }
    
        private void registerUser(final String name,  final String email, final String password,
                                  final String gender, final String dob) {
            // Tag used to cancel the request
            String cancel_req_tag = "register";
    
            progressDialog.setMessage("Adding you ...");
            showDialog();
    
            StringRequest strReq = new StringRequest(Request.Method.POST,
                    URL_FOR_REGISTRATION, new Response.Listener<String>() {
    
                @Override
                public void onResponse(String response) {
                    Log.d(TAG, "Register Response: " + response.toString());
                    hideDialog();
    
                    try {
                        JSONObject jObj = new JSONObject(response);
                        boolean error = jObj.getBoolean("error");
    
                        if (!error) {
                            String user = jObj.getJSONObject("user").getString("name");
                            Toast.makeText(getApplicationContext(), "Hi " + user +", You are successfully Added!", Toast.LENGTH_SHORT).show();
    
                            // Launch login activity
                            Intent intent = new Intent(
                                    RegisterActivity.this,
                                    MainActivity.class);
                            startActivity(intent);
                            finish();
                        } else {
    
    
    
                            String errorMsg = jObj.getString("error_msg");
                            Toast.makeText(getApplicationContext(),
                                    errorMsg, Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
    
                }
            }, new Response.ErrorListener() {
    
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e(TAG, "Registration Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_LONG).show();
                    hideDialog();
                }
            }) {
                @Override
                protected Map<String, String> getParams() {
                    // Posting params to register url
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("name", name);
                    params.put("email", email);
                    params.put("password", password);
                    params.put("gender", gender);
                    params.put("age", dob);
                    return params;
                }
            };
            // Adding request to request queue
            AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq, cancel_req_tag);
        }
    
        private void showDialog() {
            if (!progressDialog.isShowing())
                progressDialog.show();
        }
    
        private void hideDialog() {
            if (progressDialog.isShowing())
                progressDialog.dismiss();
        }
        }
    
    0 讨论(0)
  • 2020-12-05 15:34

    By default wamp sets the following as the default for any directory not explicitly declared:

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
    

    For me, if I comment out the line that says Require all denied I started having access to the directory in question. I don't recommend this.

    Instead in the directory directive I included Require local as below:

    <Directory "C:/GitHub/head_count/">
        AllowOverride All
        Allow from all
        Require local
    </Directory>
    

    NOTE: I was still getting permission denied when I only had Allow from all. Adding Require local helped for me.

    0 讨论(0)
  • 2020-12-05 15:36

    I find the best (and least frustrating) path is to start with Allow from All, then, when you know it will work that way, scale it back to the more secure Allow from 127.0.0.1 or Allow from ::1 (localhost).

    As long as your firewall is configured properly, Allow from all shouldn't cause any problems, but it is better to only allow from localhost if you don't need other computers to be able to access your site.

    Don't forget to restart Apache whenever you make changes to httpd.conf. They will not take effect until the next start.

    Hopefully this is enough to get you started, there is lots of documentation available online.

    0 讨论(0)
  • 2020-12-05 15:43

    1.

    first of all Port 80(or what ever you are using) and 443 must be allow for both TCP and UDP packets. To do this, create 2 inbound rules for TPC and UDP on Windows Firewall for port 80 and 443. (or you can disable your whole firewall for testing but permanent solution if allow inbound rule)

    2.

    If you are using WAMPServer 3 See bottom of answer

    For WAMPServer versions <= 2.5

    You need to change the security setting on Apache to allow access from anywhere else, so edit your httpd.conf file.

    Change this section from :

    #   onlineoffline tag - don't remove
         Order Deny,Allow
         Deny from all
         Allow from 127.0.0.1
         Allow from ::1
         Allow from localhost
    

    To :

    #   onlineoffline tag - don't remove
        Order Allow,Deny
          Allow from all
    

    if "Allow from all" line not work for your then use "Require all granted" then it will work for you.

    WAMPServer 3 has a different method

    In version 3 and > of WAMPServer there is a Virtual Hosts pre defined for localhost so dont amend the httpd.conf file at all, leave it as you found it.

    Using the menus, edit the httpd-vhosts.conf file.

    It should look like this :

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot D:/wamp/www
        <Directory  "D:/wamp/www/">
            Options +Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require local
        </Directory>
    </VirtualHost>
    

    Amend it to

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot D:/wamp/www
        <Directory  "D:/wamp/www/">
            Options +Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

    Note:if you are running wamp for other than port 80 then VirtualHost will be like VirtualHost *:86.(86 or port whatever you are using) instead of VirtualHost *:80

    3. Dont forget to restart All Services of Wamp or Apache after making this change

    0 讨论(0)
  • 2020-12-05 15:48

    Adding Allow from All didn't worked for me. Then I tried this and it worked.

    OS: Windows 8.1
    Wamp : 2.5

    I added this in the file C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

    <VirtualHost *:80>
        ServerAdmin localhost@localhost.com
        DocumentRoot "c:/wamp/www/"
        ServerName localhost
        ServerAlias localhost
        ErrorLog "logs/localhost-error.log"
        CustomLog "logs/localhost-access.log" common
    </VirtualHost>
    
    0 讨论(0)
提交回复
热议问题