Linux를 실행하는 서버에 배포 될 Windows에서 PHP 응용 프로그램을 효과적으로 개발할 수 있습니까?


19

Windows에서 PHP를 코딩하고 나중에 Linux를 실행하는 서버에서 호스팅하는 것이 좋습니까? 그러한 프로젝트의 마이그레이션에 문제가있을 수 있습니까?

특히 PHP 초보자이기 때문에 문제가있을 수 없다고 생각하고 OS 관련 고급 기능을 사용하지 않습니다. 그러나 나는 리눅스를 정말로 좋아하지 않기 때문에 확인하고 싶습니다.


1
문제에 대한 간단한 해결책은 Samba가 Windows 호스트에서 실행되는 Linux VM입니다.
treecoder

예, 가능하지만 몇 가지 고려해야 할 사항이 있습니다. 자세한 내용은 답변을 확인하십시오. 리소스로 인해 개발자가 좋아하는 것이 아니라 개발자가해야 할 일 중 하나입니다.
umlcat

답변:


27

몇 가지 조언 :

파일 시스템 대소 문자 구분

파일 이름이 HelloWorld.php 인 경우 :

include "helloworld.php";

Windows에서 합법적이며 작동합니다. 그러나 리눅스 파일 이름은 당신이라는 파일이있을 수 있습니다, 대소 문자를 구분 HelloWorld.php, helloworld.php, hEllOwOrlD.php같은 디렉토리에. 따라서 대소 문자를 구분하는 파일 시스템에서 개발하는 것처럼 Windows에서 개발해야합니다. 정확한 파일 이름, 디렉토리 이름, 확장명 .php을 사용하십시오 .PHP.

디렉토리 및 경로 구분 기호

Windows에서는 다음과 같이 말합니다.

include 'classes\myClass.php';

그러나 Linux에서는 다음과 같이 말합니다.

include 'classes/myClass.php';

PHP는 신경 쓰지 않을 정도로 똑똑하며 두 구분 기호는 두 시스템에서 모두 작동합니다. 그러나 대부분의 시스템에서 표준이기 때문에 일관되고 슬래시 (/)와 함께 가야합니다. 멋진이 미리 정의 된 상수 DIRECTORY_SEPARATOR 당신이 지금까지 그 이동하려는 경우, 올바른로 변환 :

include "classes" . DIRECTORY_SEPARATOR . "myClass.php";

경로 구분 기호는 Windows의 세미콜론이며 그렇지 않으면 콜론입니다. 따라서 안전을 위해 다음을 수행해야합니다.

set_include_path(get_include_path() . PATH_SEPARATOR . $path);

경로 구분 기호가 필요한 경우 대부분의 사람들은 PHP가 사용하는 구분 기호를 신경 쓰지 않기 때문에 괜찮지 만 한 가지 중요한 점이 있습니다. 구분 기호는 시스템에 디렉토리 또는 경로를 요청할 때 시스템 고유의 구분 기호입니다. 따라서 포함 경로를 해당 부분으로 분해 하려고한다고 가정 해 보겠습니다 .

$includePath = get_include_path();

$pathParts = explode(";", $includePath) // Will only work on Windows
$pathParts = explode(":", $includePath) // Will work on other systems but not Windows
$pathParts = explode(PATH_SEPARATOR, $includePath) // Will work everywhere!!!

파일 인코딩 및 구분자

모든 스크립트의 파일 인코딩을 Cp * 대신 UTF-8로 설정하고 파일 행 구분 기호를 Unix ( "\n"대신 "\r\n") 로 설정하도록 IDE를 설정해야합니다 . 대부분의 경우 실제로 중요하지 않지만 일관성이 있어야하며 가장 좋은 방법은 Unix 방식입니다 (Windows에서는 잘 작동하지만 그 반대는 아닙니다).


1
줄 바꿈 문제가 발생할 수있는 문자열의 경우 PHP에는 현재 플랫폼에 올바른 줄 바꿈 문자를 사용하는 PHP_EOL 상수도 포함됩니다.
Jonathan Patt

5
사람들은 실제로 PHP / Windows에서 경로에 백 슬래시를 사용합니까? Linux에서 PHP를 처음 사용하지 않더라도 백 슬래시를 피하기 위해 백 슬래시를 피할 수 있습니다.
cHao

2
"classes \\ myClass.php"가 아니어야합니까?
luiscubal

@luiscubal 큰 따옴표를 사용하고 있기 때문에 그렇습니다 ... 작은 따옴표로 편집 해 주셔서 감사합니다.
yannis

3
대소 문자 구분과 파일 인코딩은 Windows / Linux간에 항상 문제를 일으키는 두 가지입니다.
Rangoric

6

당신은 실행할 수 없습니다 strftime()%e에서 언급 된 바와 같이, Windows 환경에서 매뉴얼 페이지 :

C 라이브러리에서 모든 변환 지정자를 지원하지는 않을 수 있으며,이 경우 PHP의 strftime ()에서 지원되지 않습니다. 또한 모든 플랫폼에서 음수 타임 스탬프를 지원하지는 않으므로 날짜 범위가 유닉스 시대 이전으로 제한 될 수 있습니다. 이는 1970 년 1 월 1 일 이전의 날짜뿐만 아니라 % e, % T, % R 및 % D (및 기타)도 Windows, 일부 Linux 배포판 및 기타 운영 체제에서 작동하지 않음을 의미합니다. Windows 시스템의 경우 지원되는 변환 지정자의 전체 개요는» MSDN 에서 찾을 수 있습니다 .


4

코드를 실행하는 데 아무런 문제가 없습니다. Linux에서 Windows에 저장된 파일을 편집하면 줄 끝 문자가 다를 수 있지만 아무 것도 아프지 않을 것입니다. 그것이 귀찮다면 Unix 줄 끝을 사용하도록 Windows IDE / 편집기를 구성하십시오.


3

Linux 테스트 베드로 자신을 설정하십시오. Windows에서 실행되는 가상 Linux 컴퓨터 일 수도 있고 듀얼 부팅 컴퓨터 일 수도 있고 친구 시스템 일 수도 있습니다. 그런 다음 가끔 (예 : 월요일 아침) 코드를 Linux 시스템으로 이식하고 테스트하십시오.

다른 답변은 직면하게 될 주요 문제를 처리했지만 다음과 같은 여러 가지 작은 문제가 있습니다.

  • 임시 디렉토리가 다른 곳에 있습니다.
  • 파일 및 디렉토리 권한이 다릅니다
  • system () 함수가 급격히 바뀐다
  • Apache가 변경으로 실행하는 사용자 이름
  • Windows XP에서 작동하는 것은 Windows 8에서 실패 할 수 있습니다.

예, 이러한 차이점을 모두 신중하게 해결할 수있는 방법이 있지만 해결 방법을 신중하게 사용하셨습니까? 물론 아닙니다-코드를 작성하고 실행 했으므로 괜찮습니다.

비슷한 운영 체제에서 테스트 할 때까지 호스트 컴퓨터에 아무 것도 두지 마십시오.

Windows에서 Linux로 포팅하는 경험은 없지만 Linux에서 Windows로 포팅하는 경험이 있고 Linux에서 OS X로 포팅하는 경험이 더 있습니다. 할 수 있지만 핵심은 테스트, 테스트 및 테스트입니다.


1

Linux 명령 줄과 vim과 같은 Linux 편집 도구에 익숙하지만 Windows 시스템에서 대부분의 PHP 개발을 수행합니다.

개발 서버로 사용하는 인터넷에 가상 서버가 있으며 (한 달에 약 20 달러 정도) FileZilla를 사용하여 연결합니다. FileZilla는 편집중인 파일을 임시 디렉토리에 다운로드하고 저장을 추적하며 저장하면 dev 서버에 다시 던져서 테스트합니다.

약간 번거롭지 만 거의 모든 곳에서 개발을 할 수 있습니다. 썸 드라이브에서 FileZilla와 간단한 편집기를 사용하여 다른 컴퓨터에서 연결하여 변경할 수도 있습니다. 모든 테스트는 항상 Linux 서버에서 수행되므로 서버에서 코드를 던질 때 불쾌한 놀라움이 줄어 듭니다.

저렴한 호스팅 계정으로 동일한 작업을 수행 할 수 있지만 (개발중인 응용 프로그램의 종류에 따라 저렴한 호스팅 계정이 상당히 약하기 때문에 성능 문제가 발생할 수 있지만) 다른 많은 FTP 응용 프로그램에도 편집 및 업로드 기능.


1

예, 가능하지만 몇 가지 고려해야 할 사항이 있습니다. 자세한 내용은 답변을 확인하십시오.

리소스로 인해 개발자가 좋아하는 것이 아니라 개발자가해야 할 일 중 하나입니다.

PC에 로컬 웹 서버 (apache, cherokee, M $)가 설치되어 있고 PHP 서버가 설치되어있을 수 있습니다. 그리고 PC가 인터넷에 연결되어 있지 않거나 짧은 시간 동안 만 연결할 수 있습니다.

나중에 인터넷에 연결된 동일한 PC 또는 다른 PC로 ftp 도구를 사용하여 실제 웹 사이트를 업데이트하고 파일을 실제 서버로 업데이트 할 수 있습니다.


0

대부분의 사람들이 말했듯이 실제로 문제는 없어야합니다. 즉, VirtualBox를 사용하면 프로덕션 환경을 편리하게 사용하지 않고도 프로덕션 환경에서 작동하는지 확인하기 위해 코드베이스를 테스트 할 수있는 Linux 가상 머신을 실제로 쉽게 설 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.