Как выполнить научные сценарии Python на сервере

Я работаю над своим проектом, в котором я пытаюсь классифицировать изображение. Для этого я отправляю изображение с устройства Android на сервер для классификации. На сервере есть скрипт php, который принимает изображение и сохраняет его в папке загрузки на локальном сервере. Ниже приведен код, который сохраняет изображение на сервере.

upload.php

<?php

// Path to move uploaded files
$target_path = dirname(__FILE__).'/uploads/';

if (isset($_FILES['image']['name'])) {
$target_path = $target_path . basename($_FILES['image']['name']);

try {
// Throws exception incase file is not being moved
if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
// make error flag true
echo json_encode(array('status'=>'fail', 'message'=>'could not move file'));
}

//echo $output;
$output = null;
exec('python walnut_predict.py' ,$output, $return);
echo json_encode(array('status'=>'success', 'message'=>$output));

// File successfully uploaded
// echo json_encode(array('status'=>'success', 'message'=>$output));
} catch (Exception $e) {
// Exception occurred. Make error flag true
echo json_encode(array('status'=>'fail', 'message'=>$e->getMessage()));
}
} else {
// File parameter is missing
echo json_encode(array('status'=>'fail', 'message'=>'Not received any file'));
}

/*
$output = null;
exec('python walnut_predict.py' ,$output, $return);
echo json_encode(array('status'=>'fail', 'message'=>$output));
//print_r($output);
//print_r($return)

*/
?>

walnut_predict.py

    from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
from keras.models import load_model
from keras.models import Sequential
import cv2
import demjson
import numpy as np
from Tkinter import Tk
from tkFileDialog import askopenfilename
from keras.preprocessing.image import ImageDataGenerator,
array_to_img, img_to_array, load_img
model = Sequential()

model = load_model('first_try_walnut.h5')
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

img1 = cv2.imread("black.jpg")
img1 = cv2.resize(img1, (150, 150))
img1 = np.reshape(img1, [1, 150, 150, 3])
classes1 = model.predict_classes(img1)

if classes1 == 1:
data = [{'op': 'Black Walnut'}]
json = demjson.encode(data)
return json
else:
data = [{'op': 'English Walnut'}]
json = demjson.encode(data)
return jsonif __name__ == '__main__':
app.run()

Проблема в том, что walnut_predict.py не запускается при запуске из файла upload.php.

0

Решение

Попробуйте указать полный путь к python и скрипту

exec('/full_path/python /full_path_script/walnut_predict.py' ,$output, $return);

Также установите скрипт с разрешением на выполнение (+ x).

Добавьте это в первую строку скрипта Python

#!/usr/bin/env python

в заключение
Если вы используете PHP через Apache, убедитесь, что у пользователя Apache (www-data) есть разрешение на доступ & выполнить скрипт.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]