Weirdly enough, after performing a stack trace of the process responsible for performing the installation of ExpressionEngine, I was able to find the following error occurring when accessing a portion of Cartthrob:
stat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english/cartthrob_lang.php", {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs", {st_mode=S_IFDIR|0754, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs", {st_mode=S_IFDIR|0754, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english/cartthrob_lang.php", {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system/expressionengine", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs/system", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com/httpdocs", {st_mode=S_IFDIR|0754, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/site.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english/cartthrob_lang.php", {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
open("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english/cartthrob_lang.php", O_RDONLY) = 26
fstat(26, {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
lseek(26, 0, SEEK_SET) = 0
fcntl(26, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(26, {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b2aa0b87000
lseek(26, 0, SEEK_CUR) = 0
open("/var/www/vhosts/site.com/httpdocs/system/expressionengine/third_party/cartthrob/language/english/cartthrob_lang.php", O_RDONLY) = 27
fstat(27, {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
mmap(NULL, 76362, PROT_READ, MAP_SHARED, 27, 0) = 0x2b2aa0b88000
munmap(0x2b2aa0b88000, 76362) = 0
close(27) = 0
ioctl(26, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff09e24360) = -1 ENOTTY (Inappropriate ioctl for device)
fstat(26, {st_mode=S_IFREG|0777, st_size=76362, ...}) = 0
mmap(NULL, 76394, PROT_READ, MAP_PRIVATE, 26, 0) = 0x2b2aa0b88000
lseek(26, 0, SEEK_CUR) = 0
munmap(0x2b2aa0b88000, 76362) = 0
close(26) = 0
munmap(0x2b2aa0b87000, 4096) = 0
(This was just after the license screen, so I hadn’t even gotten to the part where I could have selected to install the Cartthrob module as part of the installation. I usually install only the base modules and then install 3P stuff via the CP after EE is installed.)
Removing Carthrob’s files from the third_party system folder left me with similar errors re: Solspace Calendar. Removing Calendar’s files from the third_party system folder eliminated the errors and the installer ran fine.
n.b. Nothing showed up in the Apache logs; whatever was failing was failing silently.
AFTER installing, I moved the Cartthrob and Calendar files back into the third_party system folder, and both modules installed without issue.
So, perhaps there’s an issue in the installer where it looks for available modules and hangs on something?