Skip to content
Permalink
Browse files

[bugfix][server] Fix temporary path permission issue

If I don't misread the docs, if a template is given, the file
is created in the current directory instead of the temporary
directory reported by QDir::tempPath()

Furthermore it cannot be set by env TMPDIR.

This issue drove me crazy (and no exceptions and no logs!)
until when I switched the server user to root (that is
of course not what we want).

As a temporary workaround, the server can be configured to
use /tmp or another www-data writeable directory as a working
directory.

By prefixing with tempPath() the file will be created
in the system temp directory.
  • Loading branch information
elpaso committed Mar 3, 2018
1 parent 0a6024b commit c614b942f37c38716d72fd33410060a26a84e563
@@ -59,7 +59,7 @@ services. A module may register multiple services.

The registry gain ownership of services and will call 'delete' on cleanup

:param service: a QgsServerResponse to be registered
:param service: a QgsService to be registered
%End

int unregisterService( const QString &name, const QString &version = QString() );
@@ -73,7 +73,7 @@ class SERVER_EXPORT QgsServiceRegistry
*
* The registry gain ownership of services and will call 'delete' on cleanup
*
* \param service a QgsServerResponse to be registered
* \param service a QgsService to be registered
*/
void registerService( QgsService *service SIP_TRANSFER );

@@ -68,6 +68,7 @@
#include "qgsdxfexport.h"
#include "qgssymbollayerutils.h"
#include "qgslayoutitemlegend.h"
#include "qgsserverexception.h"

#include <QImage>
#include <QPainter>
@@ -379,11 +380,11 @@ namespace QgsWms
configurePrintLayout( layout.get(), mapSettings );

// Get the temporary output file
QTemporaryFile tempOutputFile( QStringLiteral( "XXXXXX.%1" ).arg( formatString.toLower() ) );
QTemporaryFile tempOutputFile( QDir::tempPath() + '/' + QStringLiteral( "XXXXXX.%1" ).arg( formatString.toLower() ) );
if ( !tempOutputFile.open() )
{
// let the caller handle this
return nullptr;
throw QgsServerException( QStringLiteral( "Could not open temporary file for the GetPrint request." ) );

}

if ( formatString.compare( QLatin1String( "svg" ), Qt::CaseInsensitive ) == 0 )

0 comments on commit c614b94

Please sign in to comment.
You can’t perform that action at this time.