Запрещено: у вас нет разрешения на доступ / на этом сервере, ошибка WAMP
Я установил wamp on ОС Windows 8 и получил выше ошибку, когда я иду на localhost или phpmyadmin. После долгих поисков я нашел много ответов, которые включают в себя изменение httpd.conf to Allow from All
etc. этой ссылка показывает такой общий ответ с дополнительной информацией.
моя проблема в том, что многие утверждают, что он дает разрешение всем пользователям на доступ к phpMyAdmin, и он небезопасен и уязвим и т. д. Я хочу творить совершенно безопасный сервер WAMP, и все в порядке, если я это сделаю?
может кто-нибудь пожалуйста обеспечить меня с некоторой ссылкой или информацией?
5 ответов
Я считаю, что лучший (и наименее сложный) путь-начать с Allow from All
, затем, когда вы знаете, что это будет работать таким образом, масштабируйте его до более безопасного Allow from 127.0.0.1
или Allow from ::1
(localhost).
пока ваш брандмауэр настроен правильно, Allow from all
не должно вызывать никаких проблем, но лучше разрешить только с localhost, если вам не нужны другие компьютеры для доступа к вашему сайту.
не забудьте перезапустить Apache после изменения файл httpd.conf. Они не вступят в силу до следующего старта.
надеюсь, этого достаточно, чтобы вы начали, есть много документации, доступной в интернете.
1.
в первую очередь Порт 80 (или то, что вы используете) и 443 должны быть разрешены для пакетов TCP и UDP. Для этого создайте 2 входящих правила для TPC и UDP на Брандмауэре Windows для портов 80 и 443. (или вы можете отключить весь брандмауэр для тестирования, но постоянное решение, если разрешить входящее правило)
2.
если вы используете WAMPServer 3 см. Нижнюю часть ответа
для версий WAMPServer
вам нужно изменить параметр безопасности на Apache, чтобы разрешить доступ из любого другого места, поэтому отредактируйте свой .
изменить этот раздел с:
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
Allow from localhost
в :
# onlineoffline tag - don't remove
Order Allow,Deny
Allow from all
если" разрешить из всех "линия не работает для вашего использования, то" требовать всех предоставленных" тогда это сработает для вас.
WAMPServer 3 имеет другой метод
в версии 3 и > WAMPServer есть виртуальные хосты, предварительно определенные для localhost
поэтому не изменяйте httpd.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 после внесения этого изменения
по умолчанию 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
помог мне.
добавлять Allow from All
не сработало для меня. Затем я попробовал это, и это сработало.
ОС: Windows 8.1
Wamp: 2.5
я добавил Это в файл 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>
Это может быть одно решение.
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();
}
}