Запрещено: у вас нет прав доступа/на этом сервере, ошибка WAMP

Я установил wamp на окна 8 и получил вышеописанную ошибку, когда я перехожу на localhost или phpmyadmin. После долгих поисков я нашел много ответов, которые включают изменение httpd.conf на Allow from All и т.д. This ссылка показывает такой общий ответ с дополнительной информацией.

Моя проблема заключается в том, что многие утверждают, что она дает разрешение всем пользователям на доступ к phpMyAdmin, и она небезопасна и уязвима и т.д. Я хочу создать абсолютно безопасный WAMP-сервер, и все в порядке, если я это сделаю?

Может кто-нибудь, пожалуйста, предоставит мне ссылку или информацию?

Ответы

Ответ 1

Я считаю, что лучший (и наименее расстраивающий) путь должен начинаться с Allow from All, тогда, когда вы знаете, что он будет работать таким образом, верните его в более безопасный Allow from 127.0.0.1 или Allow from ::1 (localhost).

Пока ваш брандмауэр настроен правильно, Allow from All не должен вызывать никаких проблем, но лучше разрешить только с локального хоста, если вам не нужны другие компьютеры для доступа к вашему сайту.

Не забудьте перезапустить Apache всякий раз, когда вы вносите изменения в httpd.conf. Они не вступят в силу до следующего запуска.

Надеюсь, этого достаточно, чтобы вы начали, есть много документации, доступной в Интернете.

Ответ 2

1.

в первую очередь Порт 80 (или то, что когда-либо вы используете) и 443 должен разрешать как TCP, так и UDP-пакеты. Для этого создайте 2 входящие правила для TPC и UDP на брандмауэре Windows для портов 80 и 443. (или вы можете отключить весь брандмауэр для тестирования, но постоянное решение, если разрешить входящее правило)

2.

Если вы используете WAMPServer 3 См. нижнюю часть ответа

Для версий WAMPServer <= 2,5

Вам нужно изменить параметр безопасности на Apache, чтобы разрешить доступ из любого места, поэтому отредактируйте файл httpd.conf.

Измените этот раздел:

#   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

если строка "Разрешить от всех" не работает для вашего использования "Требовать все предоставленные", то он будет работать для вас.

У WAMPServer 3 есть другой метод

В версии 3 и > WAMPServer есть виртуальные хосты, предварительно определенные для localhost, поэтому не изменяйте файл httpd.conf вообще, оставьте его, как вы его нашли.

Используя меню, отредактируйте файл httpd-vhosts.conf.

введите описание изображения здесь

Он должен выглядеть так:

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

Изменить его на

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

Примечание: если вы используете wamp для другого, кроме порта 80, то VirtualHost будет как VirtualHost *: 86. (86 или порт, который вы используете) вместо VirtualHost *: 80

3. Не забудьте перезапустить все службы Wamp или Apache после внесения этого изменения

Ответ 3

По умолчанию wamp устанавливает в качестве значения по умолчанию для любого явно объявленного каталога:

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

Для меня, если я прокомментирую строку, в которой говорится Require all denied, я начал получать доступ к рассматриваемой директории. Я не рекомендую это.

Вместо директивы каталога я включил Require local, как показано ниже:

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

ПРИМЕЧАНИЕ. Я все еще получал разрешение, когда я имел Allow from all. Добавление Require local помогло мне.

Ответ 4

Добавление Allow from All не сработало для меня. Затем я попробовал это, и это сработало.

ОС: Windows 8.1
Wamp: 2.5

Я добавил это в файл C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "c:/wamp/www/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

Ответ 5

Это может быть одно решение.

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();
    }
    }