Genero 4GL «Невозможно открыть ресурс для записи» Ошибка при сохранении XML
Я использую стандартную XML-библиотеку, поставляемую с Genero 4GL. Я пытаюсь сохранить документ XML в определенный каталог на основе переменной в файле свойств. Я вижу, что он получает правильный путь, И я могу убедиться, что права доступа к папкам, к которым он идет, равны 777 (он основан на Linux). Однако я продолжаю получать сообщение об ошибке «невозможно открыть ресурс для записи», когда я добираюсь до
save
вызов.
try
let doc = xml.domDocument.create()
call doc.setXmlStandalone(true)
let report_node = doc.createDocumentFragment()
call xml.Serializer.VariableToDom(rpt_rec[1], report_node)
call doc.appendDocumentNode(report_node)
call doc.normalize()
call doc.setFeature("format-pretty-print", true)
call doc.save(xml_file)
return true
catch
for i=1 to doc.getErrorsCount()
display "[", i, "] ", status, " ", doc.getErrorDescription(i)
end for
return false
end try
Я не смог найти ничего в документации Genero о том, почему я получаю эту ошибку. Единственное, что я знаю, это то, что если я просто сохраню XML в каталог, он сработает. Но если я пытаюсь сохранить где-нибудь еще, это не так.
Может ли кто-нибудь дать некоторое представление о том, почему я могу сохранить свой XML-документ только в
/tmp
каталог, даже если права доступа к папке, в которую я хочу, верны? Спасибо.
1 ответ
Ваше описание проблемы указывает на разрешения операционной системы. Я знаю, вы говорите, что проверили разрешения, но, возможно, добавили код отладки, например...
DISPLAY xml_file
DISPLAY os.Path.writable(xml_file)
DISPLAY os.Path.writable(os.Path.dirName(xml_file))
DISPLAy os.Path.rwx(xml_file)
DISPLAY os.Path.rwx(os.Path.dirName(xml_file))
... чтобы убедиться, что код находится там, где вы думаете.
В нашей базе знаний был один случай с 2017 года, когда клиент сообщил о похожей проблеме. К сожалению, они не добавили небольшой https://stackoverflow.com/help/minimal-reproducible-example , который позволил нам воспроизвести, но в то время мы поставили под сомнение формат URI в их примере (это было для сети Windows). диск со своего Linux-сервера), а также то, что они записывали в тот же файл, который читали.