Access to XMLHttpRequest at 'http://url/fileName' from origin 'http://url:port-number' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
xhr.js?b50d:210 POST http://url/fileName net::ERR_FAILED 200
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'data') at eval (fileName.vue?1c92:239)
■ 에러 발생
Vue.js 3 에서 Axios의 post 혹은 get을 사용해 php에 데이터를 요청해 결과 데이터를 불러오려는데 에러가 발생하였다.
이는 BackEnd (php) 에서 url요청 허용을 해놓지 않았기 때문에 발생한 에러이다.
그렇기 때문에 php파일에서 간단하게 추가해야한다.
<?php header('Access-Control-Allow-Origin:*');
이렇게 작성하면 되는데, 만약 다른 상세한 설정(PUT, DELETE 등) 도 추가하려면 아래의 내용까지 추가해주면 된다.
systemctl status apache2.service
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-10-27 14:16:45 KST; 16min ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 475439 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
10월 27 14:16:45 server systemd[1]: Starting The Apache HTTP Server...
10월 27 14:16:45 server apachectl[475447]: apache2: Syntax error on line 231 of /etc/apache2/apache2.conf: Could not open configuration file /etc/phpmyadmin/apache.conf: No such file or directory
10월 27 14:16:45 server apachectl[475439]: Action 'start' failed.
10월 27 14:16:45 server apachectl[475439]: The Apache error log may have more information.
10월 27 14:16:45 server systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
10월 27 14:16:45 server systemd[1]: apache2.service: Failed with result 'exit-code'.
10월 27 14:16:45 server systemd[1]: Failed to start The Apache HTTP Server.
환경: Linux Ubuntu 20.0.4LTS, PHP8, Apache 사용
사전 작업 : php7.4 -> php 8.0으로 업그레이드 (완료)
이에 해당하는 에러를 어떤 사람이 /etc/apache2/apache2.conf 파일의 수정을 통해 해결했다는 내용이 있었다.
이에 맞춰 apache2.conf 를 자세히 보던 와중 에러 문구가 눈에 띄었다.
phpmyadmin 부분에서 문제라는 것을 확인하였다.
그래서 과감하게 (사실은 소심하게 주석까지 해주면서ㅋㅋ) phpmyadmin을 사용하지 않으니 해당 부분을 주석처리하여 서버(server)를 구동할 때 해당 부분을 읽지 않게하였더니 성공.
=> 하지만 이것은 phpmyadmin을 사용하시는 분들은 하면 안된다는 것을 확인해주세요.
아무래도 php 버전업그레이드(7.4->8.0 upgrade)를 하면서 phpmyadmin 고유의 데이터베이스(database)를 놓고, 해당 부분을 추가적으로 손보지 않았기 때문에 이러한 에러가 발생한 것 같았다.
PHP 라라벨 프레임워크(Laravel Framework)에서 마이그레이션을 생성하고, 이를 적용하는 방법을 포스팅하겠습니다.
1. migration 생성
- 마이그레이션을 생성하는 방법은 다양합니다. 그 중에서 make:model을 통해 model에 해당하는 마이그레이션을 생성하도록 하겠습니다.
// make: ** 커맨드를 이용한 마이그레이션 생성 $ php artisan make:model '마이그레이션 명' -m
2. migration 내용 작성
- 이 또한 본인의 입맛에 맞게 설정하면 되는데요, 저는 todo list 를 만들고 있기에 해당하는 내용만 간략하게 작성하도록 하겠습니다.
// up 부분에만 해당하는 코드를 수정하도록 하겠습니다.
public function up()
{
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->boolean('completed')->default(false);
$table->timestamp('completed_at')->nullable();
$table->timestamps();
});
}
migration 일부분
3. migrate 하기
$ php artisan migrate
본인이 이전에 migrate 를 했다면 단 2줄이 뜰테고, 이전에 하지 않았다면 적용되지 않았던 모든 테이블들이 생성되었을 것입니다.