Reading and writing non-ascii filenames with Livecode Server under Linux

This lessons describes 2 methods how to enable Livecode Server to write/read files with non-ascii filenames under Linux.

According to the configuration of your server it could be that Livecode Server is not able to read/write files with non-ascii filenames.

For example running this script

put the seconds into URL "file:testä.txt"
put the result

would return can't open file on such Apache servers.

 

Method 1 - redirect rule in .htaccess

This method uses a redirect rule in .htaccess to set the environment variable LANG.

Enable mod_rewrite modul

To get this working your Apache server needs to have the mod_rewrite modul enabled. Most hosting providers have this modul enabled by default.

If not you could ask your provider to enable this module.

If you run your own server make sure that the mod_rewrite modul is enabled in your httpd.conf file.

In that file  you should find a line

#LoadModule rewrite_module modules/mod_rewrite.s

Remove the # from the line and restart Apache to get the new configuration loaded.

 

Modifying .htaccess

Open the .htaccess file in an editor and search for a line  RewriteEngine On

and add the following line below that line  

RewriteRule \.(lc) - [E=LANG:en_US.UTF-8]

If there is no line RewriteEngine On, then add  the following 2 lines to the .htaccess file

RewriteEngine On
RewriteRule \.(lc) - [E=LANG:en_US.UTF-8]

After saving the .htaccess file you should be able to read and save files with non-ascii filenames.

 

Explanation:

The RewriteRule tells Apache to set the environment variable LANG to en_US.UTF-8 every time an .lc file is executed/accessed.

The new value of LANG is only used for that session in which the livecode server script is executed. So there is no risk to harm any other apps on the server.

 

Method 2 - define a shell script instead livecode-server to execute .lc files

This method was posted to the  mailing-list by Mark Waddingham

This method makes i mandatory that  Livecode Server is already installed and the httpd.conf is correctly configured for Livecode Server

If you do not already have  setup your server to use Livecode Server then please see the following lesson on how to install Livecode Server on Linux

https://lessons.livecode.com/m/4070/l/36652-how-do-i-install-livecode-server-on-linux-with-apache

You need to have write access to the httpd.conf file of your Apache server to use this method.

 

Create the shell script

create a text file with the following content

#!/bin/sh
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
exec livecode-server

Save the file in the same folder where also Livecode Server executable is located.

Modify httpd.conf

Open the httpd.conf file and search for the  line

ScriptAlias /livecode-cgi/livecode-server "<path to LiveCode Server folder>/livecode-server"

where "<path to LiveCode Server folder>/livecode-server" is the path to your Livecode Server executable.

 

Now replace the path to the Livecode Server executable with the path to your created shell script

Let's say Livecode Server was installed in /home/ua123456/public_html/cgi-bin/livecode-server/     and we named the shell script myLCSstarter

then the  original line would like this

ScriptAlias /livecode-cgi/livecode-server  /home/ua123456/public_html/cgi-bin/livecode-server/livecode-server

and after replacing  the line would look like this

ScriptAlias /livecode-cgi/livecode-server /home/ua123456/public_html/cgi-bin/livecode-server/myLCSstarter 

Save the httpd.conf and restart Apache.

 

After that you should be able to write and read files with non-ascii file names.

 

 

0 Comments

Add your comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.