Запрещено: у вас нет прав доступа/на этом сервере, ошибка 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();
}
}