Notes:

1. I've read the manual entry, and multiple threads related to this, more than once.

2. The “chroot location” as defined in /etc/lighttpd.conf. is unchanged - /var/www

3. Someone suggested, and I also tried "/var/www/" - same error.

4. As previously noted - Stuart's answer was tested on a clean, unmodified, lighttpd.conf.

5. As previously noted I also tried removing "nodev" from /etc/fstab on line "/var ffs rw,nosuid 1 2"

Thanks


``` # lighttpd configuration file

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules              = (
#                               "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
#                               "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_deflate",
#                               "mod_ssi",
#                               "mod_expire",
#                               "mod_rrdtool",
                                "mod_accesslog" )

## A static document-root. For virtual hosting take a look at the
## mod_simple_vhost module.
server.document-root        = "htdocs/"

#### accesslog module
accesslog.filename          = "logs/access.log"

## where to send error-messages to
server.errorlog             = "logs/error.log"

# files to check for if .../ is requested
index-file.names            = ( "index.html", "index.htm", "default.htm" )

server.event-handler = "kqueue"
server.network-backend = "writev"

server.bind = "0.0.0.0"
server.port = "80"

$SERVER["socket"] == "[::]:80" { }

# mimetype mapping

mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jar"          =>      "application/x-java-archive",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar",
  # default mime type
  ""              =>      "application/octet-stream",
 )

# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr        = "enable"

## send a different Server: header
## be nice and keep it at lighttpd
# server.tag                 = "lighttpd"

## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## error-handler for status 404
#server.error-handler-404   = "/error-handler.html"
#server.error-handler-404   = "/error-handler.php"

## to help the rc.scripts
server.pid-file            = "/var/run/lighttpd.pid"

###### virtual hosts
##
##  If you want name-based virtual hosting add the next three settings and load
##  mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root   = "/srv/www/vhosts/"
#simple-vhost.default-host  = "www.example.org"
#simple-vhost.document-root = "/htdocs/"


##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/usr/share/lighttpd/errors/status-"
#server.errorfile-prefix    = "/srv/www/errors/status-"

## virtual directory listings
#dir-listing.activate       = "enable"
## select encoding for directory listings
#dir-listing.encoding        = "utf-8"

## enable debugging
#debug.log-request-header   = "enable"
#debug.log-response-header  = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found   = "enable"

# chroot() to directory
server.chroot              = "/var/www"

server.username            = "_lighttpd"
server.groupname           = "_lighttpd"

#### compress module
#compress.cache-dir         = "/var/cache/lighttpd/compress/"
#compress.filetype          = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server               = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "host" => "192.168.0.101",
#                                   "port" => 80
#                                 )
#                               )
#                             )

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
#fastcgi.server             = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "socket" => "/var/run/lighttpd/php-fastcgi.socket",
#                                   "bin-path" => "/usr/local/bin/php-cgi"
#                                 )
#                               )
#                            )

#### CGI module
#cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
#                               ".cgi" => "/usr/bin/perl" )
#

#### SSL engine
#ssl.engine                 = "enable"
#ssl.pemfile                = "/etc/ssl/private/lighttpd.pem"

#### status module
#status.status-url          = "/server-status"
#status.config-url          = "/server-config"

#### auth module
## read authentication.txt for more info
#auth.backend               = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"

#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
#auth.backend.ldap.filter   = "(uid=$)"

#auth.require               = ( "/server-status" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "user=jan"
#                               ),
#                               "/server-config" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "valid-user"
#                               )
#                             )

#### url handling modules (rewrite, redirect, access)
#url.rewrite                = ( "^/$"             => "/server-status" )
#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1"; ) #### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#  url.redirect            = ( "^/(.*)" => "http://%1/$1"; )
#}

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern        = "/srv/www/vhosts/%3/htdocs/"

#### expire module
#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds>

#### ssi
#ssi.extension              = ( ".shtml" )

#### rrdtool
#rrdtool.binary             = "/usr/local/bin/rrdtool"
#rrdtool.db-name            = "/var/lib/lighttpd/lighttpd.rrd"

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/var/lib/lighttpd/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html";
# trigger-before-download.trigger-timeout = 10

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"

#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1

```

On 8/21/24 06:06, Robert Klein wrote:
Hi,

your “chroot location” is defined in /etc/lighttpd.conf.  If you didn't change 
it, it is /var/www.

Please read the man page for chroot(8).  The command to do this is “man 8 
chroot” (without the quotes).  Alternatively the Wikipedia entry for chroot can 
help you understand what chroot is and does.

Stuart's answers assume you didn't change the file /etc/lighttpd.conf.  If you 
did change it, you might want to send the contents of the changed file, too.

Best regards,
Robert


On Tue, 20 Aug 2024 12:33:57 -0400
David Colburn<q...@kd4e.com>  wrote:

So, I'm at a dead end atm.

It was a clean install - OpenBSD 7.5, php 8.3.10, lighttpd-1.4.74-mysql

What should have worked (Stuart's instructions) didn't.

'chroot' locations are as listed (see following).

Where do I go from here, please?

Is it possible that the lighttpd.conf from lighttpd-1.4.74-mysql
contains errors?

Or, that I should have used a different version of lighttpd?

Or ...

Thanks.


b7# locate chroot

/usr/local/share/doc/pkg-readmes/femail-chroot

/usr/sbin/chroot

/usr/share/man/man2/chroot.2

/usr/share/man/man8/chroot.8

/var/db/pkg/femail-chroot-1.0p3

/var/db/pkg/femail-chroot-1.0p3/+CONTENTS

/var/db/pkg/femail-chroot-1.0p3/+DESC

/var/db/pkg/femail-chroot-1.0p3/+REQUIRED_BY

/var/db/pkg/femail-chroot-1.0p3/REQUIRING

On 8/18/24 20:30, Stuart Henderson wrote:
Hmm. That should be ok...

--
   Sent from a phone, apologies for poor formatting.


On 18 August 2024 21:19:25 David Colburn<q...@kd4e.com>  wrote:
total 0

crw-rw-rw- 1 root  wheel  2, 2 Aug 18 10:07 null


On 8/18/24 16:00, Stuart Henderson wrote:
Did you do the mkdir etc? What does ls -l /var/www/dev show?

--
   Sent from a phone, apologies for poor formatting.


On 18 August 2024 17:01:52 David Colburn<q...@kd4e.com>  wrote:
I removed "nodev" from the /var line and rebooted.

Same error:

2024-08-13 22:29:37:
(/usr/obj/ports/lighttpd-1.4.74-mysql/lighttpd-1.4.74/src/configfile.c.1891)

opening /dev/null failed. No such file or directory.
2024-08-13 22:29:37:
(/usr/obj/ports/lighttpd-1.4.74-mysql/lighttpd-1.4.74/src/server.c.1935)

Opening errorlog failed.


On 8/18/24 11:19, David Colburn wrote:
/etc/fstab currently looks like this:

none swap sw
/ ffs rw 1 1
/home ffs rw,nodev,nosuid 1 2
/tmp ffs rw,nodev,nosuid 1 2
/usr ffs rw,nodev 1 2
/usr/X11R6 ffs rw,nodev 1 2
/usr/local ffs rw,wxallowed,nodev 1 2
/usr/obj ffs rw,nodev,nosuid 1 2
/usr/src ffs rw,nodev,nosuid 1 2
/var ffs rw,nodev,nosuid 1 2


On 8/18/24 10:28, David Colburn wrote:
That's very helpful, thanks!

/var is mounted "ffs rw,nodev,nosuid, 1 2"

/var/www isn't specifically mentioned.

Would it be affected by the /var mount settings?

Thanks again.

On 8/18/24 07:50, Stuart Henderson wrote:
On 2024-08-15, David Colburn<q...@kd4e.com>  wrote:
This is a multi-part message in MIME format.
--------------SIjdwSa43FawypA6wB8kzt18
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Dell OptiPlex 7050

OpenBSD 7.5

php 8.3.10

lighttpd-1.4.74-mysql

I'm using root.

"*rcctl -df start lighttpd*" errors

"/daemonized server failed to start; check error log for
details doing
_rc_rm_runfile (failed)/"

error.log says:

"...
(/usr/obj/ports/lighttpd-1.4.74-mysql/lighttpd-1.4.74/src/configfile.c.1981)


opening /dev/null failed: No such file or directory"

"...
(/usr/obj/ports/lighttpd-1.4.74-mysql/lighttpd-1.4.74/src/configfile.c.1935)


Opening errorlog failed: No such file or directory"

According to this:

https://www.reddit.com/r/openbsd/comments/nygjdm/lighttpd_cant_find_devnull_on_69/


there's supposed to be a directory here: /usr/sbin/chroot/ but
chroot is
actually a file.

I'm not sure how to proceed to fix the dev/null problem ...
Assuming /var/www/dev does not already exist, this should do it:

# mkdir /var/www/dev
# cd /var/www/dev
# sh /dev/MAKEDEV std
# rm !(null)

If it already exists then you may need to adapt the rm command to
preserve existing entries, or use mknod(8) manually to just create
the "null" node.

You'll also need to make sure that /var/www is _not_ mounted with
the "nodev" option (/etc/fstab).

If this is a hard requirement for lighttpd then the port could
probably do with explaining it somewhere .. (maintainer cc'd)
  

Reply via email to