2012-02-21 43 views
10

Tôi đã thử Perfect Workflow, with Git, GitHub, and SSH và tôi đã thiết lập mọi thứ, ngoại trừ chạy lệnh git pull từ php.Chạy git pull từ tập lệnh php

Khi tôi chạy exec('git pull') tôi nhận được:

Không thể tạo thư mục '/.ssh'. Xác minh khóa máy chủ không thành công. chết người: Sự kết thúc từ xa treo lên bất ngờ

Nếu tôi chạy nó trong các thiết bị đầu cuối (như root) nó hoạt động tốt, nhưng tôi cần phải móc này để làm việc từ Post-Nhận URL (Github).

Nếu tôi làm exec('whoami') tôi nhận được apache.

Đó là (dv) từ trung gian với CentOS.

+2

bạn cần phải đặt người dùng của kho lưu trữ git giống với người dùng mà ứng dụng web đang chạy dưới dạng. –

+2

Và thư mục nhà của người dùng 'apache' được đặt là gì? 'ssh' đang lấy thư mục gốc của máy làm thư mục chính, và nó không thể viết ở đó là người dùng' apache'. ('root' rõ ràng là có thể, đó là lý do tại sao nó hoạt động) –

+1

Cảm ơn các bạn đã trả lời. Ben: Làm thế nào tôi có thể làm điều đó? Brian: tôi không biết. Im không phải là sys/admin guy. Im chạy trên một mediatemple's (dv) với CentOS – AFRC

Trả lời

8

Nếu bạn muốn apache (người dùng) có thể kéo từ git, bạn sẽ phải tạo khóa ssh cho apache, sau đó thêm khóa đó vào các khóa chỉ đọc trên github.

Dòng chảy là một cái gì đó như thế này (tinh chỉnh yêu cầu của bạn)

usermod -s /bin/bash apache 
su apache 
cd ~ 
ssh-keygen # work through the keygen dance (added a dash) 

tải lên (dấu ngã ở đây đề cập đến homedir apache) ~/.ssh/id_rsa.pub để GitHub và cung cấp truy cập apache để bất cứ Repos nó cần phải kéo từ.

Sau đó, bạn có thể kiểm tra trên máy chủ bởi một lần nữa ing su' để apache và chạy git pull

su apache 
cd ~/working-copy 
git clone my-project 

Khi đã làm việc bạn sẽ có thể để chạy một git kéo qua PHP .

+0

Hi quickshiftin. Cảm ơn. Khi tôi chạy lệnh 'chmod apache -s/bin/bash' tôi nhận được: _chmod: không thể truy cập' apache ': Không có tệp hoặc thư mục nào như vậy. Xin lỗi, nhưng im thực sự mới với admin/unix điều này máy chủ. – AFRC

+1

Rất tiếc, đó phải là 'chmod -s/bin/bash apache'. Nó thiết lập shell của apache user để bash để bạn có thể su vào apache và kiểm tra các hoạt động git trước khi chuyển sang chạy chúng thông qua PHP; Tôi sẽ thay đổi nó trong câu trả lời của tôi. – quickshiftin

+0

Vẫn nhận được chmod: không thể truy cập 'apache': Không có tệp hoặc thư mục nào như vậy – AFRC

Các vấn đề liên quan