Я много читал об этой проблеме, но все равно не могу заставить ее работать. И я знаю, что это даже не очень хорошая практика, но я действительно хочу понять, почему это не работает ...
Я хочу запустить скрипт 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, даже если я попытаюсь дать этим местоположениям разрешения, аналогичные упомянутым выше.