Windows에서 PHP를 코딩하고 나중에 Linux를 실행하는 서버에서 호스팅하는 것이 좋습니까? 그러한 프로젝트의 마이그레이션에 문제가있을 수 있습니까?
특히 PHP 초보자이기 때문에 문제가있을 수 없다고 생각하고 OS 관련 고급 기능을 사용하지 않습니다. 그러나 나는 리눅스를 정말로 좋아하지 않기 때문에 확인하고 싶습니다.
Windows에서 PHP를 코딩하고 나중에 Linux를 실행하는 서버에서 호스팅하는 것이 좋습니까? 그러한 프로젝트의 마이그레이션에 문제가있을 수 있습니까?
특히 PHP 초보자이기 때문에 문제가있을 수 없다고 생각하고 OS 관련 고급 기능을 사용하지 않습니다. 그러나 나는 리눅스를 정말로 좋아하지 않기 때문에 확인하고 싶습니다.
답변:
몇 가지 조언 :
파일 시스템 대소 문자 구분
파일 이름이 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에서는 잘 작동하지만 그 반대는 아닙니다).
당신은 실행할 수 없습니다 strftime()
와 %e
에서 언급 된 바와 같이, Windows 환경에서 매뉴얼 페이지 :
C 라이브러리에서 모든 변환 지정자를 지원하지는 않을 수 있으며,이 경우 PHP의 strftime ()에서 지원되지 않습니다. 또한 모든 플랫폼에서 음수 타임 스탬프를 지원하지는 않으므로 날짜 범위가 유닉스 시대 이전으로 제한 될 수 있습니다. 이는 1970 년 1 월 1 일 이전의 날짜뿐만 아니라 % e, % T, % R 및 % D (및 기타)도 Windows, 일부 Linux 배포판 및 기타 운영 체제에서 작동하지 않음을 의미합니다. Windows 시스템의 경우 지원되는 변환 지정자의 전체 개요는» MSDN 에서 찾을 수 있습니다 .
Linux 테스트 베드로 자신을 설정하십시오. Windows에서 실행되는 가상 Linux 컴퓨터 일 수도 있고 듀얼 부팅 컴퓨터 일 수도 있고 친구 시스템 일 수도 있습니다. 그런 다음 가끔 (예 : 월요일 아침) 코드를 Linux 시스템으로 이식하고 테스트하십시오.
다른 답변은 직면하게 될 주요 문제를 처리했지만 다음과 같은 여러 가지 작은 문제가 있습니다.
예, 이러한 차이점을 모두 신중하게 해결할 수있는 방법이 있지만 해결 방법을 신중하게 사용하셨습니까? 물론 아닙니다-코드를 작성하고 실행 했으므로 괜찮습니다.
비슷한 운영 체제에서 테스트 할 때까지 호스트 컴퓨터에 아무 것도 두지 마십시오.
Windows에서 Linux로 포팅하는 경험은 없지만 Linux에서 Windows로 포팅하는 경험이 있고 Linux에서 OS X로 포팅하는 경험이 더 있습니다. 할 수 있지만 핵심은 테스트, 테스트 및 테스트입니다.
Linux 명령 줄과 vim과 같은 Linux 편집 도구에 익숙하지만 Windows 시스템에서 대부분의 PHP 개발을 수행합니다.
개발 서버로 사용하는 인터넷에 가상 서버가 있으며 (한 달에 약 20 달러 정도) FileZilla를 사용하여 연결합니다. FileZilla는 편집중인 파일을 임시 디렉토리에 다운로드하고 저장을 추적하며 저장하면 dev 서버에 다시 던져서 테스트합니다.
약간 번거롭지 만 거의 모든 곳에서 개발을 할 수 있습니다. 썸 드라이브에서 FileZilla와 간단한 편집기를 사용하여 다른 컴퓨터에서 연결하여 변경할 수도 있습니다. 모든 테스트는 항상 Linux 서버에서 수행되므로 서버에서 코드를 던질 때 불쾌한 놀라움이 줄어 듭니다.
저렴한 호스팅 계정으로 동일한 작업을 수행 할 수 있지만 (개발중인 응용 프로그램의 종류에 따라 저렴한 호스팅 계정이 상당히 약하기 때문에 성능 문제가 발생할 수 있지만) 다른 많은 FTP 응용 프로그램에도 편집 및 업로드 기능.
예, 가능하지만 몇 가지 고려해야 할 사항이 있습니다. 자세한 내용은 답변을 확인하십시오.
리소스로 인해 개발자가 좋아하는 것이 아니라 개발자가해야 할 일 중 하나입니다.
PC에 로컬 웹 서버 (apache, cherokee, M $)가 설치되어 있고 PHP 서버가 설치되어있을 수 있습니다. 그리고 PC가 인터넷에 연결되어 있지 않거나 짧은 시간 동안 만 연결할 수 있습니다.
나중에 인터넷에 연결된 동일한 PC 또는 다른 PC로 ftp 도구를 사용하여 실제 웹 사이트를 업데이트하고 파일을 실제 서버로 업데이트 할 수 있습니다.
대부분의 사람들이 말했듯이 실제로 문제는 없어야합니다. 즉, VirtualBox를 사용하면 프로덕션 환경을 편리하게 사용하지 않고도 프로덕션 환경에서 작동하는지 확인하기 위해 코드베이스를 테스트 할 수있는 Linux 가상 머신을 실제로 쉽게 설 수 있습니다.