0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 64

Не запускается python файл из php

11.12.2020, 09:44. Показов 908. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет. Есть сайт на php, который расположен на удаленном сервер с Ubuntu 18.04. На сайте есть поле ввода текста, и при нажатии кнопки этот текст отправляется на сервер. На сервере этот текст принимает php файл, затем в этом php файле запускается python файл, который должен синтезировать принятый текст в речь.
Код php файла:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
function clear($var) {
    $var = trim($var);
    $var = strip_tags($var);
    $var = htmlentities($var, ENT_IGNORE, "UTF-8");
    $var = stripcslashes($var);
    return $var;
}
 
if (isset($_POST['text']) && !empty($_POST['text'])) {
    $text = clear($_POST['text']);
 
    // Запись текста в файл
    $temp_text_file = fopen('temp_text.txt', 'w');
    $text_write = fwrite($temp_text_file, $text);
    fclose($temp_text_file);
    
    // Запуск python файла
    if ($text_write) {
        $command = escapeshellcmd("python3 main_synthesizer.py");
        $output =  system($command);
        $uniq_audio_name = 'audio/synthesized_audio' . uniqid() . '.wav';
        $audio_rename = rename('audio/sounds.wav', $uniq_audio_name);
        if ($audio_rename) {
            echo $uniq_audio_name;
        }
        else {
            echo "audio/synthesized_audio.wav";
        }
        
    }
    else {
        echo "Не удалось записать текст в файл";
    }
}
?>
Код python файла main_synthesizer.py:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from normalizator import normalizator
from synthesize import synthesize
 
# Присваивание текста введенной пользователем переменной
with open('temp_text.txt', 'r', encoding='utf-8') as fr:
tmp_text = fr.read()
 
# Нормализация текста   
text = normalizator(tmp_text)
 
# Запись нормализованного текста в файл elisa.txt
with open('elisa.txt', 'w') as fw:
    fw.write(text)
 
# Запускаем синтез
synthesize()
Если запускать этот python файл напрямую, то он работает отлично. Но из php когда вызываю он не работает. Но, если убрать из кода этого python файла эту строку from synthesize import synthesize, то он запускается из php и работает, но без функции synthesize. Файл synthesize.py находится в той же папке, что и файл main_synthesizer.py.
Я пробовал разные варианты запуска python файла из php:

PHP
1
2
$command = escapeshellcmd("python3 main_synthesizer.py");
$output =  exec($command);
И так пробовал:

PHP
1
2
$command = escapeshellcmd("python3 main_synthesizer.py");
$output =  shell_exec($command);
И так пробовал:

PHP
1
2
$command = escapeshellcmd("python3 main_synthesizer.py 2>&1");
$output =  shell_exec($command);
Никак не запускается при импорте функции synthesize()
Код файла synthesize.py:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
# /usr/bin/python2
'''
By kyubyong park. kbpark.linguist@gmail.com.
https://www.github.com/kyubyong/dc_tts
'''
 
from __future__ import print_function
 
import os
 
from hyperparams import Hyperparams as hp
import numpy as np
import tensorflow as tf
from train import Graph
from utils import *
from data_load import load_data
from scipy.io.wavfile import write
from tqdm import tqdm
 
def synthesize():
    # Load data
    L = load_data("synthesize")
 
    # Load graph
    g = Graph(mode="synthesize"); print("Graph loaded")
 
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
 
    # Restore parameters
    var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 'Text2Mel')
    saver1 = tf.train.Saver(var_list=var_list)
    saver1.restore(sess, tf.train.latest_checkpoint(hp.logdir + "-1"))
    print("Text2Mel Restored!")
 
    var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 'SSRN') + \
               tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, 'gs')
    saver2 = tf.train.Saver(var_list=var_list)
    saver2.restore(sess, tf.train.latest_checkpoint(hp.logdir + "-2"))
    print("SSRN Restored!")
 
    # Feed Forward
    ## mel
    Y = np.zeros((len(L), hp.max_T, hp.n_mels), np.float32)
    prev_max_attentions = np.zeros((len(L),), np.int32)
    for j in tqdm(range(hp.max_T)):
        _gs, _Y, _max_attentions, _alignments = \
            sess.run([g.global_step, g.Y, g.max_attentions, g.alignments],
                     {g.L: L,
                      g.mels: Y,
                      g.prev_max_attentions: prev_max_attentions})
        Y[:, j, :] = _Y[:, j, :]
        prev_max_attentions = _max_attentions[:, j]
 
    # Get magnitude
    Z = sess.run(g.Z, {g.Y: Y})
 
    # Generate wav files
    if not os.path.exists(hp.sampledir): os.makedirs(hp.sampledir)
    for i, mag in enumerate(Z):
        print("Working on file", i+1)
        wav = spectrogram2wav(mag)
        write(hp.sampledir + "/{}.wav".format(i+1), hp.sr, wav)
 
if __name__ == '__main__':
    synthesize()
    print("Done")
Все файлы имеют права chmod 777

Без импорта функции synthesize() python файл запускается без проблем, любым из этих функций: exec(), system(), shell_exec(), passthru()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2020, 09:44
Ответы с готовыми решениями:

Не запускается python скрипт через exec в php
Нужна помощь. Пытаюсь запустить скрипт python через кнопку на сайте(скрипт меняет текст в docx фале. скрипт не взаимодействует с...

После компиляции программы Kivy на Python не запускается exe файл
Скомпилировал прогу через PyInstaller. spec файл прикреплен, точне его код. Помогите, очень нужно... Вот spec файл # -*- mode: python ;...

Не запускается php файл на сервере через WebWiew
String web = &quot;http://домен.ru/my/version.php?ver=1&amp;serial=&quot; + ver1; webView.loadUrl(web);Скрипт PHP не срабатывает, с...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2020, 09:44
Помогаю со студенческими работами здесь

В php из python, работу невозможно найти новичкам python. Может перейти? Есть безпроблемный хостинг для php?
Безпроблемный хостинг - значит не будет проблем таких, как в heroku. У меня в компе сайт работает без проблем на локалке. Но при загрузке...

PHP не пишет в файл, когда запускается через Cron
Всем доброго времени суток. Собственно, требуется помощь, проблема уже описана в заголовке. В Cron стоит задание на выполнение файла...

download.php - Файл для загрузки файла который на сервере нету, PHP создает сам файл
Здравствуйте!!! Есть просьба большая. Например создал файл download.php И когда вызываю этот файл как пример http://мой...

Как активировать код python на php так чтобы он использовал переменную php
Как активировать код python на php так чтобы он использовал переменную php и выводил на php Подскажите пожалуйста

Как из php скрипта передать значение в python и получить результат в этот же php скрипт
Нам с товарищем в универе задали выполнить работу, а именно написать матричный калькулятор, я создал frontend https://webinclude.site/...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru