PHP exec (python.py), brak dostępu zapisywanie pliku

głosy
2

Próbuję uruchomić skrypt Pythona korzystając z funkcji exec () PHP.

Strona .php jest ładowany przez przeglądarki:

<?php
 echo exec(whoami);

echo(exec(/bin/python2.7 /var/www/cgi-bin/api/download.py));
?>

Oto skrypt Pythona:

# -*- encoding: UTF-8 -*-

import os
import httplib2
import io
import sys
from httplib2 import Http
from oauth2client import client
from oauth2client import tools
from apiclient import discovery
from oauth2client.file import Storage
from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow
from apiclient.http import MediaIoBaseDownload
from oauth2client.service_account import ServiceAccountCredentials

scopes = ['https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name('/opt/scripts/full-patator-preprod.json', scopes)

delegated_credentials = credentials.create_delegated('#############')
http_auth = delegated_credentials.authorize(Http())

drive_service = build('drive', 'v2', http=http_auth)


def get_file(service,fileId):
    file = service.files().get(fileId=fileId).execute(http=http_auth);
    return file




item = get_file(drive_service,#############)

print(item.get('title'))
delegated_credentials = credentials.create_delegated(#############)
http_auth = delegated_credentials.authorize(Http())


request = drive_service.files().export_media(fileId=#############, mimeType='application/pdf')

fh = io.FileIO(api/test.pdf,wb)
downloader = MediaIoBaseDownload(fh, request)
done = False

counter=0;
while done is False:
    status, done = downloader.next_chunk()
    print Download %d%%. % int(status.progress() * 100)
    counter+=1
    if counter > 10:
        done=True
with open(test.pdf) as f: ## PDF File
    print(type(f))           ## Open file is TextIOWrapper
    bw=io.TextIOWrapper(fh)   ## Conversion to TextIOWrapper
    print(type(bw))          ## Just to confirm

Wszystko działa, jeśli wykona .py lub .php jako użytkownik Apache. Ale przy moim przeglądarkę, jeśli chodzi napisać pliku:

fh = io.FileIO(api/test.pdf,wb)

Mam to wyjście w moim apache error_log:

Traceback (najnowsza wezwanie ostatni): File /var/www/cgi-bin/api/download.py, linia 46, w FH = io.FileIO ( test.pdf, wb) IOError: [ERRNO 13] Permission denied: '' test.pdf

Cóż, byłem pewien, że to ze względu na pozwolenia folderu nadrzędnego, a następnie za zgodą rodzica rodzica. Ale ja ustawić 777 uprawnienia do tych folderów i nic nie zrobił.

Mój skrypt php jest w /var/www/html/manager/execute.php mój .py skrypt jest w /var/www/cgi-bin/api/download.py

foldery / www /, / cgi-bin /, / api / 777 ma prawa.

Wiem, że nie jest to dobra praktyka, ale chciałbym, aby rozwiązać ten problem przed Uprawiając czystsze.

Z góry dziękuję

Utwórz 21/02/2017 o 10:49
użytkownik
W innych językach...                            


1 odpowiedzi

Odpowiedział 21/02/2017 o 11:11
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more