0

我使用 Laravel 4 来开发我的项目。

我在我的 Mac 上开发,提交到 Git,然后在服务器上克隆它(linode 1G VPS)。

由于“vendor”文件夹默认为“GIT-ignored”,所以我通常在将项目克隆到服务器后执行“composer install”。

之后,我在本地安装的任何其他软件包,我都会在服务器上执行“composer update”。

昨天报了这个问题——PHP Composer update "cannot allocate memory" 报错(使用Laravel 4)

到目前为止,我还没有找到解决方案。我什至尝试进行“新”克隆和“composer install”,这给了我内存错误。这非常令人沮丧。

那么我的问题是,可以将我的整个项目上传到服务器吗?由于“供应商”文件夹只是“git-ignored”的东西,如果我只是复制那里的所有内容,它会工作吗?(我没有尝试过,因为我的服务器目前还活着,我不想损坏任何东西)。

“compiled.php”文件的实际作用是什么?它依赖于平台吗?我也可以复制那个文件吗?

我现在已经多次看到这个内存问题,并阅读了其他人报告类似问题。我希望我可以上传整个项目文件夹并祈祷它会起作用。

谢谢你的帮助!

4

2 回答 2

0

I do not have VPS, or even shell access to my custom/shared hosting from my provider, but I can run git and composer commands without that.

Use sshfs http://osxfuse.github.io/
sshfs actually does SFTP connection to your server and mounts server to local directory.
This way, you can run git and composer commands localy. You do not depend on your VPS/hosting server. sshfs sends files in background to remote server.

To mount VPS to local dir, run this

sshfs user@serverip:. /path/to/existing/local/dir // to mount root dir
cd !$ // to get into mounted dir

// or

sshfs user@serverip:foldername /path/to/existing/local/dir // to mount specific dir
cd !$ // to get into mounted dir

Now you can do whatever you want.

于 2013-08-09T08:51:11.667 回答
0

对你来说是一件好事 - 可以通过这样的方式设置 Laravel 配置,即同一个应用程序(相同的代码副本)可以在不同的服务器(环境)上以不同的方式运行。

我是这样写的,因为如果您迟早将远程服务器与代码的本地副本同步,您会偶然发现每次同步后更改数据库凭据或应用程序设置等问题 - 这当然没有意义:)

查看Laravel 4 Docs 环境配置以了解更多信息,或按照Andrew Elkins 的本教程 - 如何设置 Laravel 4 环境

环境基于 url 匹配。

您将在 /bootstrap/start.php 中找到该配置

$env = $app->detectEnvironment(array(

'local' => array('your-machine-name'),

));

现在假设您正在本地开发并使用本地前缀/后缀。例如:my-new-site.local 或 local.my-new-site

$env = $app->detectEnvironment(array(

'local' => array('local.*','*.local'),

));

这设置了环境,现在要使用它,您需要在 /app/config/ 中创建一个本地文件夹

1 mkdir app/config/local

因此,您希望本地有不同的数据库配置。只需将数据库配置文件复制到本地目录并进行修改即可。

1 cp app/config/database.php app/config/local/database.php

总结并回答您的问题:

1)我想可以将整个项目目录复制到远程服务器(尽管,如果您的复制供应商可能需要很多时间 - 它通常包含大量文件)

2)如果您这样做,请记住在远程服务器上更新 composer.json(以反映所有必要的要求)

3)如果您在本地和远程使用不同的数据库服务器 - 您显然必须在远程服务器上运行迁移和播种器(这也涉及包迁移/种子)

4) 迁移所有文件后,执行

composer dump-autoload
php artisan optimize --force --env=YourProductionEnvironmentName

这应该重建引导程序/自动加载器

5) 如果您使用的是上述 Laravel 环境设置,请记住将您的远程服务器视为生产服务器(如果您的本地服务器正在测试/暂存)。

于 2013-08-09T09:31:17.763 回答