Public Pages (public.isima.fr)✯
Guide for students and teachers at ISIMA.
In one sentence
Everything you place in the public_html directory of your pedagogical personal directory is published, without authentication, at
https://public.isima.fr/<your-login>.
Do not confuse with staff personal pages
perso.isima.fr / perso.limos.fr is
another service, reserved for staff: URL with /~login, .htaccess read,
content taken from your personal ~/shared space.
On public.isima.fr the URL does not include a ~, and the content is taken
from your pedagogical personal directory — the one used for your
VMs, classrooms and
pedagogical servers.
Your address✯
https://public.isima.fr/<your-uca-login>
No tilde, no subdomain: https://public.isima.fr/~your-login
returns a 404 error, intentionally. This is the address to include in a CV or internship report:
it is accessible without an account, even by a recruiter.
Your page already exists
The public_html directory was created with your account, with the correct permissions and a temporary index.html. You don’t need to request or activate anything: just replace this file.
Publication is automatic
Any readable public_html is served. If you don’t want your page published, empty your public_html or request its removal from the support team.
Where to place my files✯
The directory to populate is ~/public_html, in your pedagogical personal directory (/home/local.isima.fr/<your-login>), the one you find identically on all Linux pedagogical machines.
From your personal virtual machine, your personal directory is already the correct one:
ssh <your-login>@vm-<your-login>.local.isima.fr
cd ~/public_html
You can also simply open public_html in the VM’s file manager, in graphical session or via
Guacamole.
On the computers in classrooms and on the
pedagogical servers running Linux, you log into this same personal directory: ~/public_html refers to the same directory as on your VM.
cd ~/public_html
Any SFTP client (WinSCP, FileZilla, Cyberduck, scp, rsync) can upload files, targeting your VM:
scp -r mysite/* <your-login>@vm-<your-login>.local.isima.fr:public_html/
From outside the school, first connect to the VPN. Authentication uses your UCA account, or a Kerberos ticket.
~/shared is not ~
Your personal space ~/shared — drive P: on Windows — is a separate space. A site placed in ~/shared/public_html serves the personal pages at perso.*, not public.isima.fr.
Publishing my page✯
Replace the temporary index.html with your own:
public_html/
├── index.html ← your home page
├── style.css
└── images/
A change is visible after about one minute. There is no publication to trigger or cache to clear: the server reads your files directly. If the change does not appear after a few minutes, clear your browser cache (Ctrl+Shift+R) before reporting a problem.
PHP✯
PHP 8.5 is available. A .php file is executed; index.php serves as the home page if no index.html is present.
Installed extensions: bcmath, bz2, calendar, curl, exif, gd,
gmp, lexbor, mbstring, mysqlnd, openssl, pcntl, pdo_mysql,
pdo_pgsql, pgsql, redis, soap, sockets, zip.
Your space is read-only for PHP
A script can read your files, but it cannot write anything: no uploads, no SQLite database, no cache files, no visit counters. A form that saves data will not work.
Two other limits, for the same reason — a single interpreter serves the roughly 2,180 accounts:
- no execution functions (
exec,shell_exec,system…), and no network access viafile_get_contents('http://…'); - your script only sees your own directory: any attempt to read elsewhere fails, including for another user.
Other PHP-related extensions — .phps, .phtml, .phar, .inc — are not served at all: they are not executed, and displaying them would publish your source code, often with embedded credentials.
What the service does not do✯
No CGI, no SSI. However, .py, .sh, .c, .java are served, as readable sources: a legitimate pedagogical use.
A directory without index.html displays a list of its files. The files listed below do not appear in the listing — they are hidden from the directory index as they are blocked from download.
.htaccess files are read, but partially. Allowed directives are RewriteEngine and RewriteRule, ErrorDocument, AddType, DirectoryIndex, IndexOptions and IndexIgnore. Everything else — notably Options and Require — triggers a 500 error for the entire directory (see below).
Your pages are not indexed by search engines. This is a service choice: unfinished lab content, personal data published without consideration, and lack of consent for ongoing indexing.
Files that are never served✯
Regardless of their permissions, these files return 404:
.git/, .svn/, .hg/ |
version control directories |
.env, .htaccess, .htpasswd |
configuration files |
node_modules/, vendor/, .venv/, __pycache__/ |
dependencies |
*.sql, *.sqlite, *.db |
database exports |
*.key, *.pem, id_rsa |
private keys |
*.bak, *~, *.swp, backups/ |
backups |
*.phps, *.phtml, *.phar, *.inc |
PHP source code (.php is executed) |
*.cgi, *.pl, *.jsp, *.asp |
intended for an engine this service does not have |
If you push a complete project into public_html, its dependencies and configuration will therefore not be accessible. This is intentional: a published .env is a credentials leak.
My page returns an error✯
404 — page not found✯
In order of frequency:
- The requested filename is incorrect. (A directory without
index.htmlis not an error: it displays a list of its files.) - The requested file is in the list above.
-
Your personal directory is not traversable by the server. Check:
ls -ld ~The output should look like
drwx--x--x. If not:chmod 711 ~
403 — access denied✯
The server can see your directory but cannot read it. This is almost always caused by copying from Windows or a network share, which overwrites permissions.
chgrp -R grppersoapache ~/public_html
find ~/public_html -type d -exec chmod 2750 {} +
find ~/public_html -type f -exec chmod 640 {} +
setfacl -d -m group::r-x ~/public_html
Why these four commands
The web server reads your files via the grppersoapache group. The 2 in
2750 (setgid bit) means any file subsequently created in this directory
retains this group; the default ACL ensures it remains readable even if
your umask is restrictive. Without these two settings, the problem
reappears with the next uploaded file.
If the problem persists after these commands, open a ticket including your login.
500 — configuration error✯
Almost always caused by a .htaccess file containing a directive the server does not allow. A single rejected line makes the entire directory inaccessible, and Apache’s error message does not specify which one.
The two common causes come from .htaccess files written for
perso.isima.fr, where these lines are allowed:
Options +FollowSymLinks # not allowed here
Require all granted # not allowed here
Remove them: on this service, your pages are served without them.
Limits✯
- Your personal directory is subject to a quota; no specific limit applies to what is served by the web.
- Your page has no dedicated backup: it is as reliable as the backup of your personal directory.
- For students, the page exists only while the account is active: no redirection is provided after the end of studies.
Support✯
- Category: “Services” > Subcategory: “Personal Page”
- Include your login and the URL concerned