Apache Flask 13 error, permission denied

I first applied the Flask application using Apache on AWS. Downloading HTML pages, however, things like loading files, writing files, and reading files do not seem to work. In the example below, I call this special function, which records the data received from the URL. But here I turned it off, and the code just needs to read a file that already exists. So export_po_list.xml already exists and I checked this from the terminal. The same code works very well locally on my PC.

Checking / var / log / apache2 / error.log shows

IOError: [Errno 13] Permission denied: 'export_po_list.xml' 

I made chmod 777 -R for the entire folder with this flash application. This still does not work.

  def po_data(a,b,c): array0 = [] array1 = [] array2 = [] array3 = [] array4 = [] array5 = [] array6 = [] array7 = [] array8 = [] array9 = [] array10 = [] array11 = [] array12 = [] array13 = [] array14 = [] array15 = [] array16 = [] array17 = [] array18 = [] array19 = [] array20 = [] url_begin = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet?$filter=ImBstyp eq '" url_mid_1 = "' and ImBsart eq '" url_mid_2 = "' and ImErnam eq '" url_end = "'" final_url = url_begin + a + url_mid_1 + b + url_mid_2 + c + url_end print "\n\n" print final_url print "\n\n" auth_get_po_data ='S4H_FIN','Welcome1' headers_get_po_data = {"Content-type":'application/json;charset=utf-8'} final_url = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet?$filter=ImBstyp eq 'F' and ImBsart eq 'NB' and ImErnam eq 'S4H_MM'" #Post data back # final_url = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet? # r_get_po_data = requests.get(final_url,headers=headers_get_po_data,auth=auth_get_po_data, verify=False) # print r_get_po_data.text print os.getcwd() # Write temporary XML file to work on parsing # file = open('export_po_list.xml', 'w') # file.write(r_get_po_data.text) # file.close() # Read XML file print os.getcwd() tree = ET.parse('export_po_list.xml') root = tree.getroot() #Extract relevant info for child in root: for child2 in child: for child3 in child2: counter = 1 for child4 in child3: # 5 24 if (counter == 5): array0.append(str(child4.text)) elif (counter == 6): array1.append(str(child4.text)) elif (counter == 7): array2.append(str(child4.text)) elif (counter == 8): array3.append(str(child4.text)) elif (counter == 9): array4.append(str(child4.text)) elif (counter == 10): array5.append(str(child4.text)) elif (counter == 11): array6.append(str(child4.text)) elif (counter == 12): array7.append(str(child4.text)) elif (counter == 13): array8.append(str(child4.text)) elif (counter == 14): array9.append(str(child4.text)) elif (counter == 15): array10.append(str(child4.text)) elif (counter == 16): array11.append(str(child4.text)) elif (counter == 17): array12.append(str(child4.text)) elif (counter == 18): array13.append(str(child4.text)) elif (counter == 19): array14.append(str(child4.text)) elif (counter == 20): array15.append(str(child4.text)) elif (counter == 21): array16.append(str(child4.text)) elif (counter == 22): array17.append(str(child4.text)) elif (counter == 23): array18.append(str(child4.text)) elif (counter == 24): array19.append(str(child4.text)) elif (counter == 25): array20.append(str(child4.text)) counter = counter + 1 return array0, array1, array2, array3, array4, array5, array6, array7, array8, array9, array10, array11, array12, array13, array14, array15, array16, array17, array18, array19, array20 
+5
source share
1 answer

Do not use a relative path name for the file, you need to calculate the absolute path and make sure that the location is writable by the directory. This is necessary because the current working directory for Apache is usually the root directory that is not writable for your code.

For more information, see the mod_wsgi documentation at:

+3
source

Source: https://habr.com/ru/post/1274504/


All Articles