I want to migrate my website (PHP + MySQL) from shared hosting to Google Cloud.
My first attempt was to host the database on Google Cloud SQL and deploy the PHP code to the App Engine standard environment, I've tested it and it works perfectly, but that setup is way beyond my budget.
To reduce costs I have thought:
Regarding (1) I have installed MySQL on Compute Engine without any problem. From the console of my local device I have been able to enter MySQL, create a test database, create users, etc.
When I rungcloud compute instances list
I can see that the instance exists and is running:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
mysql us-central1-a e2-micro N.NNN.N.N RUNNING
Regarding (2) I have created a minimal test setup. Anapp.yaml
file with the following content:
runtime: php81
# [START cloud_tasks_app_env_vars]
env: standard
# [END cloud_tasks_app_env_vars]
handlers:
# Serve your app through a front controller at index.php or public/index.php.
- url: .*
script: auto
And anindex.php
file that tries to connect to the database in two ways.
Using localhost or the IP of the instance:
try {
$username = "root";
$password = "THEPASSWORD";
$dbName = "THEDATABASE";
/*
I tryed all these $host values
without success
*/
$host='INSTANCENAME';
$host='NN.NNN.N.N'; #Instance IP
$host='127.0.0.1';
$host='localhost';
$dsn = sprintf(
'mysql:dbname=%s;host=%s',
$dbName,
$host
);
$conn = new PDO(
$dsn,
$username,
$password
);
Using unix socket:
try {
$username = "root";
$password = "THEPASSWORD";
$dbName = "THEDATABASE";
$instanceUnixSocket = "/cloudsql/MYPROJECT:us-central1-a:INSTANCENAME";
$dsn = sprintf(
'mysql:dbname=%s;unix_socket=%s',
$dbName,
$instanceUnixSocket
);
// Connect to the database.
$conn = new PDO(
$dsn,
$username,
$password
);
In neither of the two cases the connection is possible, getting the error:
SQLSTATE[HY000] [2002] No such file or directory in /workspace/index.php:NN
WhereNN
is the line where I declare the$dsn
variable.
IMPORTANT NOTE: The instance where I installed MySQL and App Engine are in the same project.
I want to know where is my error and how can I connect to MySQL like this.
I've searched the Google documentation and this site for a similar case, and I've seen two questions for which no satisfactory solution is given.
If there is a better way to achieve my purpose, I appreciate any guidance on that. It is not easy for a beginner in Google Cloud to decide on the most suitable tools.
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Find the answer in similar questions on our website.
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.
PHP (from the English Hypertext Preprocessor - hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites.
The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
https://www.php.net/
DBMS is a database management system. It is designed to change, search, add and delete information in the database. There are many DBMSs designed for similar purposes with different features. One of the most popular is MySQL.
It is a software tool designed to work with relational SQL databases. It is easy to learn even for site owners who are not professional programmers or administrators. MySQL DBMS also allows you to export and import data, which is convenient when moving large amounts of information.
https://www.mysql.com/
Welcome to the Q&A site for web developers. Here you can ask a question about the problem you are facing and get answers from other experts. We have created a user-friendly interface so that you can quickly and free of charge ask a question about a web programming problem. We also invite other experts to join our community and help other members who ask questions. In addition, you can use our search for questions with a solution.
Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.
Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.