# File lib/phusion_passenger/utils/tmpdir.rb, line 37
        def self.passenger_tmpdir(create = true)
                dir = @@passenger_tmpdir
                if dir.nil? || dir.empty?
                        tmpdir = "/tmp"
                        ["PASSENGER_TEMP_DIR", "PASSENGER_TMPDIR"].each do |name|
                                if ENV.has_key?(name) && !ENV[name].empty?
                                        tmpdir = ENV[name]
                                        break
                                end
                        end
                        dir = "#{tmpdir}/passenger.1.0.#{Process.pid}"
                        dir.gsub!(%r{//+}, '/')
                        @@passenger_tmpdir = dir
                end
                if create && !File.exist?(dir)
                        # This is a very minimal implementation of the subdirectory
                        # creation logic in ServerInstanceDir.h. This implementation
                        # is only meant to make the unit tests pass. For production
                        # systems one should pre-create the temp directory with
                        # ServerInstanceDir.h.
                        system("mkdir", "-p", "-m", "u=rwxs,g=rwx,o=rwx", dir)
                        system("mkdir", "-p", "-m", "u=rwxs,g=rwx,o=rwx", "#{dir}/generation-0")
                        system("mkdir", "-p", "-m", "u=rwxs,g=rwx,o=rwx", "#{dir}/backends")
                        system("mkdir", "-p", "-m", "u=rwxs,g=rwx,o=rwx", "#{dir}/spawn-server")
                end
                return dir
        end