Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 64

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

11.12.2020, 09:44. Показов 894. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru