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

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

11.12.2020, 09:44. Показов 858. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru