I decided to throw up a quick OpenCart installation today using the Homestead vagrant box with Hyper-V on my Windows 10 machine, and I've got my opencart folder mapped like this in Homestead.yml:
- map: D:\web\www\oc\oc-3.0.2.0
to: /home/vagrant/code/opencart
type: "smb"
All's well. The folder is synced in the vagrant VM as expected. But on trying to install OpenCart, I get this parse error:
PHP Parse error: syntax error, unexpected ''] == '' (T_CONSTANT_ENCAPSED_STRING) in /home/vagrant/code/opencart/upload/system/startup.php on line 93
Looking at lines 92-94 of that file on my host machine:
require_once(modification(DIR_SYSTEM . 'engine/event.php'));
require_once(modification(DIR_SYSTEM . 'engine/router.php'));
require_once(modification(DIR_SYSTEM . 'engine/loader.php'));
Looking at the same lines on the synced file in vagrant:
require_once(modification(DIR_SYSTEM . 'engine/event.php'));
requirePROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
$_SERVER['HTTPS'] = true;
This code that's replaced the "require_once" code here appears earlier in this file. It's as if it's recopied over later code, making this file unusable. Here's the full file.
If I delete the lines that are copied or replace them with some other code, things appear find in the vagrant version. But if I only delete a couple of the lines, the rest still overwrite later code.
Does anyone have any idea what's causing this or how to resolve it?
So it turns out this had nothing to do with Homestead nor OpenCart. I pulled up another vagrant project I had and noticed similar problems with synced files.
I had recently installed Docker for Windows to play around with, so I decided to uninstall it and see if that would fix the problem. And it did.
So somewhere, somehow Vagrant and Docker aren't getting along on Windows 10. No idea where the exact problem is, though.