我有两个azure服务器,一个是从git hub运行我的主分支代码,第二个(dev服务器)运行我的主分支代码(我知道我可以使用/app_dev.php但是我选择这种方式因为我更喜欢它)
基本上我正在采取的步骤是添加web.config(将其粘贴在下面)以保护对我的web文件夹的访问,以便在URL被点击时它将返回前端控制器而不必执行以下操作
继承了web.config文件
package com.example.project.project;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import com.example.project.project.API.InfoAPI;
import com.example.project.project.TimeSheet.Details;
import com.example.project.project.TimeSheet.Force;
import com.example.project.project.TimeSheet.Info;
import com.example.project.project.database.MyDatabaseHelper;
public class UpdatePage extends AppCompatActivity {
InfoAPI sqlcon;
private SQLiteDatabase database;
private MyDatabaseHelper dbHelper;
private Cursor c;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbHelper = new MyDatabaseHelper(this);
setContentView(R.layout.updatepage);
final String name1 = getIntent().getExtras().getString("name");
final String date = getIntent().getExtras().getString("date");
RetrievePage(name1, date);
}
public void RetrievePage(String name, String date) {
final String name2 = name;
final String date2 = date;
final EditText name3 = (EditText) findViewById(R.id.editText9);
final EditText date3 = (EditText) findViewById(R.id.editText12);
name3.setText(name2);
date3.setText(date2);
//final Spinner weather3 = (Spinner) findViewById(R.id.spinner5);
//final Spinner status3 = (Spinner) findViewById(R.id.spinner7);
final EditText subC3 = (EditText) findViewById(R.id.editText17);
final EditText noP = (EditText) findViewById(R.id.editText18);
final EditText noH = (EditText) findViewById(R.id.editText19);
final Spinner poject3 = (Spinner) findViewById(R.id.spinner8);
database = dbHelper.getWritableDatabase();
c = database.rawQuery("SELECT w.Subcontractors, w.NumberOfPerson, w.NumberOfHours FROM Information i LEFT JOIN WorkForce w ON w.TInfo_id = i.ID WHERE i.Name = ? AND i.Date= ? ",
new String[]{String.valueOf(name2),String.valueOf(date2)}, null);
if (c != null) {
c.moveToFirst();
while (c.moveToNext()) {
Info I = new Info();
Details WD = new Details();
// String Weather = c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Weather));
//String Status = c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Status));
String SubC = c.getString(c.getColumnIndex(MyDatabaseHelper.Subcontractors));
String NoP = c.getString(c.getColumnIndex(MyDatabaseHelper.NumberOfPerson));
String NoH = c.getString(c.getColumnIndex(MyDatabaseHelper.NumberOfHours));
Force WF = new Force();
WF.setSubcontractors(SubC);
WF.setNoOfPerson(NoP);
WF.setNoOfHours(NoH);
subC3.setText(SubC);
noP.setText(NoP);
noH.setText(NoH);
}
}
c.close();
}
}
如果你去http://symfony.com/doc/current/cookbook/deployment/azure-website.html
滚动到最底部,它谈到它。我做了解释,我不太擅长解释自己。
我很困惑,因为在Dev服务器上它返回了一个twig模板,说我的项目已准备好在等等启动,但是在prod服务器上,web.config尚未合并,url是domain / web / app.php它正在重新调整我想要的控制器和模板。
答案 0 :(得分:2)
根据您的描述,您有2个Azure Web Apps服务托管开发和prod交响乐应用程序。如果我有任何误解,请指出它。
在我的测试中,在Azure Web Apps上完成部署交响乐应用程序后,作为上一个问题的答案。我只是在本地复制app_dev.php
的内容并覆盖云上的app.php
。
我评论用于检查服务器是否为localhost的代码,即:
if (isset($_SERVER['HTTP_CLIENT_IP'])
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|| !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
) {
header('HTTP/1.0 403 Forbidden');
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}
然后浏览http://<your-website-name>.azurewebsites.net
,它运行正常。
因此,请检查您的部署步骤,它应该与您成功的步骤相同。
如果您在本地项目中有一个内部部署web.config
,并使用该应用程序将其部署在Azure Web应用程序上。这似乎会在我的测试中引发内部错误。您可以尝试以下步骤来解决此问题:
web.config
文件。touch web.config