Сценарий, запускаемый из метода Ajax, не записывает файл в папку в Apache document root - PullRequest
0 голосов
/ 21 января 2020

Я много читал об этой проблеме, но все равно не могу заставить ее работать. И я знаю, что это даже не очень хорошая практика, но я действительно хочу понять, почему это не работает ...

Я хочу запустить скрипт python, нажав на веб-страницу и попросив его вернуть что-то веб-страница. Я думаю, что могу сделать эту часть. Но я также хочу, чтобы скрипт просто записывал файл в тот же каталог, где находится скрипт .. он сохраняется в директории в Apache2 web root ... / var / www/mysite

Это где все начинается в файле с именем: pytest. html

<script>
    window.onload = function () {
        $.ajax({
            type: 'POST',
            url: "scripts/pysamba1.py",
            success: function () {
                alert("working")
            },
            error: function () {
                alert("Not Working")
            }
        });
    };
</script>

Вот скрипт Python ... pysamba1.py Он подключается к общему ресурсу Samba и получает список файлов из каталога в этой папке ..

from smb.SMBConnection import SMBConnection

testFile = '/var/www/mysite/scripts/file.txt'

conn = SMBConnection('root', 'mypwd', 'MYCOMPUTER', 'OTHERCOMPUTER')
conn.connect('192.168.1.102')
results = conn.listPath('myshare', "")

for x in results:
    print x.filename.encode('utf-8')

with open(testFile, 'w+') as f:
    f.write('Hello')

conn.close()

У меня есть виртуальный хост apache для веб-сайта "mysite", и там у меня есть этот раздел, который, я думаю, должен помочь Apache2 запустить скрипт python, но я может быть неправильным!

<Directory "/var/www/mysite/scripts">
    #Require all granted
    AddHandler cgi-script .py
    Options +ExecCGI
</Directory>

Apache работает как www-data, поэтому я также дал разрешения для каталога 'mysite' в Apache2 и для папки сценариев, в которой находится сценарий python. разрешения linux (Raspbian) для каталога / var / www/mysite ...

drwxrwxr-x  6 www-data www-data 4096 Jan 19 01:46 mysite

И это разрешения для папки / var / www/mysite/scripts ", в которой скрипт python находится и где я хочу, чтобы записать файл в ...

drwxrwxr-x 2 www-data www-data 4096 Jan 20 22:54 scripts

Когда я загружаю сеть На странице видно, что скрипт Python запускается, потому что я получаю всплывающее окно с надписью: «работает», но текстовый файл не записывается в папку / var / www/mysite/scripts ».

У меня также есть файл http-access.log и там я вижу вывод журнала, показывающий:

"POST /scripts/pysamba1.py HTTP/1.1" 200 705 "http://mysite.me/pytest.html"

Когда я запускаю скрипт из командной строки как sudo, он работает нормально .. выдает список каталогов из общего ресурса Samba а также записывает файл в каталог, в котором сохранен скрипт.

Может кто-нибудь помочь мне понять, почему заставить Apache2 запустить скрипт Python успешно подключается к общему ресурсу Samba, но не записывает файл в папку папка в Apache? Я также протестировал, и сценарий python также не будет записывать файл в другие местоположения за пределами документа Apache2 root, даже если я попытаюсь дать этим местоположениям разрешения, аналогичные упомянутым выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...