How to drop WIMP for LAMP [closed] - php

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Does anyone have an example of something that can not be done on a Windows2000 server using PHP5?
UPDATE: Just to clarify, my problem isn't with IIS, or that I'm an "only open source" kinda guy. It's that the hosting is a terrible package across the board. The storage and bandwidth are ridiculous, there's no control panel so in order to do anything, even something as simple as setting up a cron job, requires contacting tech support, who grumbles about having to implement it and also seems to operate on the same timeline as the people on the island in lost.
Why not just tell the client I hear you ask! Tried it and failed. The hosting company isn't a hosting company, it's a friend of the client and nothing I say makes a blind bit of difference. I know my client is paying through the teeth for a hunk of crap but they just wont listen. On top of that, I've had to make some minor, but fundamental changes to the code base to adapt to the servers funky set up which means I now have to maintain two code bases. My development version, and the live version. it's doable, but it's wasted effort and on a tight deadline, I have better things to do with my time.
The only way I'm going to get my client to "do the right thing" is to come up with something that wont work because of the server. If not, I'll finish the job, upload it, wash my hands of it then never touch it again because it's more hassle than it's worth. I don't want to do that because I like to take pride in my work, but I will not waste my time compensating for a lazy ass server admin who really couldn't care less wether things work or not and I also wont take the blame for them either. This is my last ditch attempt to get help out a client who doesn't want to be helped. Maybe my title was misleading but I didn't want to bore everyone with the details, I just needed an answer and thought WIMP for LAMP would be the quickest way to ask. Moving to another WIMP environment wouldn't bother me, but as you can see, that's not going to happen.

On IIS 6, which ships with Windows 2000 Server, PHP will run as a CGI ... Therefore it can accomplish anything that it can do on a *nix server under apache. You must also have the supporting extensions and services installed like MySQL...

Its not a good practice to blame the technology for a mistake which is made by your client.
Explain your problems to the client (Again and Again)
Charge him more and tell him that's because of the problems you faced
Deliver the project late (Inform him earlier) tell him that this is because of the poor support from the hosting.
Find a better and cheap hosting and show the comparison to your client.
If nothing works!! QUIT! :)

It sounds like your team are using Windows, and you are an open source fan who wants to switch the Linux/Apache but don't have a good technical reason. So you are fishing here.
My comment would be that if you don't have a good reason yourself, why not stick with Windows. If you do have a good reason yourself, argue that good reason that applies to your project. Each technology has it's own advantages and disadvantages, and both are used successfully in production.
Of course, if I've misread the situation I apologise - can you edit your question to explain the situation better.

It might be hard to find a good systems administrator that knows IIS and PHP inside out.

I assume you aren't currently taking advantage of Apache's mod_rewrite utility. That's something that you can't quite do on Windows (you can, but it's a bigger job even with the latest routing / REST)
This would be a very strong case if they want restful URLs, which are often cited as good for search engines!
Other than that, charge more. If you're on a fixed rate, explain your reasons for not being able to meet the budget and quote for the additional work. These problems are usually generated by an unfair price (i.e. unfair on you in this instance).

Related

Why is XAMPP not suited for production? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I have been running XAMPP on Windows 2008 R2 for many years now, I'm only using Apache, MySql and FileZilla. I have made many custom adjustments and upgraded it serveral times. I have addressed all the security issues I have been able to find. Running as services, the servers are never down as long as Windows Server is up. They are incredible stable. Why on earth do people tell me I should not do this? None of the Q or A's I have seen here deals with the specifics, most of them ends up in typically "it's not recommended", "it's says so on the XAMPP web site, therefore it's bad". I understand that you shouldn't use XAMPP out of the box for production because it is not secure. But having changed all root users, using https/certificate instead of plain http, using MySQL users with limited privileges in my scripts, using prepared statements (either PDO or mysqli) in php MySQL queries, catching exeptions, handling errors, protecting file folders and the nitty gritty of php programming I cannot see why I can't continue to use XAMPP for production. I have NEVER experienced ANY trouble. I have settled with the perception that security is not the main problem, there must be something else. Maybe scalability or manageability of large websites with millions of users (which is not my case)? Please tell me, but only if know what you are talking about!
EDIT: I got a noteworthy comment elsewhere:
It's just not meant to do anything more than development and boutique
use. And the opinion based comments tell you why the exchanges tend to
kick these kind of questions off as people who've worked with XAMPP
and WAMP kind of have been there and weren't impressed, but didn't
bother to gather empiric data to back up their opinion.
This is a fair comment, and it might also be THE best answer I will ever get, but it I can live with that. It is great cue for exploring new computer architectures for my software.
Like you say yourself, it's all about security and out-of-the-box, XAMPP is pretty insecure. Apart from that there are no real drawbacks that I can see. The software in XAMPP is regularly used in stable, secure, commercial systems. It takes a bit of knowledge and time to configure XAMPP to become secure enough for production use (and this is the reason why people keep telling you not to do it), but since it looks like you've got it covered there should be no problem.
Though I haven't ever tried to configure windows in that way, I can think of a few problems (other than security):
managing windows and software updates - I find it hard to manage whole windows system through console and I can't imagine managing it in production
performance - (comparing localhosts) linux in my case was always faster
scalability of web apps - majority of apps is set up to work in linux server envirionment, so running or integrating 3-rd party libraries or other apps can be sometimes difficult eg. other paths, calls to console could not work etc.
These problems could be irrelevant in your case, but when developing a bigger project should be taken into account.

Cloud Hosting for PHP - Explain away my fears? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
So I've always relied on more traditional hosting when it comes to hosting my websites - either with shared or dedicated hosting. The time has come (or maybe it came long ago) for me to consider the cloud. But with the cloud come a few concerns (all arising out of my own ignorance) and I'm hoping StackOverflow can put my fears to rest.
While I've heard some answers to my questions in the past, I'm hoping to get enough feedback, and also hopefully provide a valuable resource to any others out there like me.
1) First off - how does it all work? I mean, I get the network of clouds, spinning them up and down as I need it. But until now, I've always opened up an FTP client, connected to my server and uploaded my website. My guess is this all works the same way with the cloud, but how is it all managed? How do I update files and how would I delete them? Would an FTP client suffice for the simple file-management of a website?
2) A lot of shared hosts use PHP4, and allow PHP5 with the right extension - how does this, and all the PHP extensions work? How would I turn on the mod_rewrite extension, for example? How would I select my version of PHP? Can I curl?
3) What about things like cron jobs, or administrating a mysql database? Can I access my database via a phpmyadmin interface, or via the MySQL Query Browser?
4) Lastly, how does the cost really compare to shared hosting? I know it all depends on traffic, so to phrase my question differently, where do the cost lines intersect (if at all?) For example, if I pay $100/month for a dedicated server, and can support 300,000 page visits, or 2-3 page visits per second, what would the cost be for similar usage?
As always, I appreciate the help, and hope it's enough to encourage me to use the cloud. It's so fancy!
I'd vote for Cloud Sites http://www.rackspace.com/cloud/cloud_hosting_products/sites/
I'd imagine the methods used to manage your site (in the case of Cloud Sites) would be very similar to that of your traditional shared hosted with something like Plesk or CPanel installed.
The term "Cloud" is used in many ways... What you describe is more likely a virtual root server - which you can freeze or unfreeze at will (EC2, JiffyBox (Disclaimer: I am not affiliated with any of these :)).
If you have good LAMP/Linux knowledge you do not have to worry about things like mod_rewrite etc. because you have the power to change it to your liking.
If your knowledge about root servers is limited - you can install free/open-source tools like webmin.
If your are not to enthusiastic about running your own server - a managed hosting ist probably better.
Sorry - I cannot comment on the costs.
You should be afraid...very afraid.
For offloading multiple long running tasks, clouds are fine.
However, when every web request to build a page has to go through a boat load of algorithms to find the resource, performance will suffer. (In my limited experience).
Do testing before committing to anything.

Resources to manage a PHP website [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I am a .net developer. A friend of mine is planning to outsource a website. He is getting quotes which are very cheap but the sites will be in php/msql.
At this point he is not having any resource and that includes no development machine, no programmer or whatsoever (he only has some money to invest :)). Now he wants me to get involved in this project and manage the website once the outsourcing company hands us over the application (including source-code).
Till now I have worked with VS / ASP.NET / IIS and VSS. I haven't worked a bit with php/mysql but given google / SO and little time I will be able to manage.
So I need help on identifying:
1: What and all I need on my development machine. Because after the application is handed over to me, I will be responsible to fix minor bugs and minor modifications. For major addition of new features we might go back to outsourcing(same or different company).
2: Anything specific to web-hosting I need to be aware of because ultimately I will be responsible to find host provider and manage the website.
3: Anything that can help me get going fast on php.
Editor: PHPStorm or Eclipse are popular choices.
Test Server: XAMPP which you can install locally on windows.
Version Control: Subversion (choose whichever client and server you find free).
Hosting: I like site5 for cheap shared hosting. Depends on the site's needs however.
Learn phpMyAdmin. It's a simple to use MySQL database administration tool that's already included on most lamp stacks. Allows you to set up tables, run queries, backup, etc.
I like XDebug for remote debugging and profiling. Most major IDEs are integrated with it.
To learn the code, just use the PHP online documentation. It's pretty good.
Make sure you have a similar setup as to what the outsourcing company used. Mainly: OS, Webserver/version, PHP version, MySQL version. Differences are minimal but they do crop up every now and then.
Don't skimp on price. If your hosting plan is cheap you will get exactly that.
Read their code and try to understand it (PHP is very easy to read). If you can't understand it they probably did a very bad job ;)
Suggest hitting godaddy.com for your hosting needs for most small-medium solutions. While it's true that you can host a server in your basement, it's generally more trouble than it's worth; you can buy a domain name and a year of hosting for a hundred dollars and save yourself dozens of hours of headache and downtime. While there are places that will host your site for free, a lot of times you get what you pay for.
Once the site is developed it's a (relatively) simple matter to copy-paste the site files and database; your outsource company can probably deploy their product to your godaddy server in a matter of minutes.
For your dev machine, I recommend Eclipse with the PDT plugin as your editor (download the "php version" of eclipse). I strongly recommend svn or some other source control. It's very useful to have apache and mysql installed on your dev box along with your site and db so you can test changes locally. When developing, it's good practice to test on at least IE, firefox and chrome as they're the most popular browsers at the moment.
php.net is the equivalent of the java.sun.com/reference/api/ and is searchable by function name. It also has a manual; start here http://www.php.net/manual/en/ but for small edits, if you're familiar with any c-syntax language and html you shouldn't have a problem. Just don't forget your dollar signs and semicolons.

Site Development - Your Setup ( editor,project management, test site, live site.. etc) [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I am relatively new to the Web Development business. Me and 2 friends started up our own little company. 1 person is a designer, 1 person is sales / consultant, and I am the developer. Right now, its an after work project, but we hope to expand and let it become our full time jobs.
Anyway, my question to you, is what is the best way to go about a full web development project cycle.
List of things to discuss:
Proposals - do you guys find these important
Project Planning - how much planning and mapping out should there be?
Project Management Software - I did a
little research before and I like the
online portals. Parallels stood out
for me.
Editor tools - I have been using the
most basic editor Notepad++. I feel
like I should be using something more
advanced.
PHP Framework - I just got hooked on
CodeIgniter.
Ways to deploy site - right now I am
doing most of my editing via FTP to
the live site. Should I be working
on a local copy and then uploading to
a test site for the client? Then
eventually go to the live server.
Are there ways to automate this?
(best practice ?)
I cant wait to hear all your input, especially from folks who are veterans at it!
Proposals
This really depends on what sort of clientele you are looking at. It probably will not be necessary at the beginning of your company since you will be dealing with small to medium clients, but its not bad to get into the habit. When I did a bit of freelance web development, I did not work on a proposal-based system. Instead, I did more of a site mockup->changes->implementation system. I suppose a mockup is a form of a proposal...
Project Planning
Again, this depends on the size of the project. If you're working on a static 20-odd page website, you probably do not want to get too much into the planning aspect. However, if you are working with a site that pulls into a large number of technologies (forums, CMS, AJAX, web-services, etc.) you probably want to invest a little more beforehand.
Project Management Software
Cannot say I have ever used a project management tool during my days as a freelance web developer. I'd say don't invest in anything right now. Once your company grows, you'll have a better idea of what your requirements are.
Editor tools
Notepad++ may cut it now, but I wouldn't recommend it in the long-run. If you are looking at technologies other than PHP, I'd definitely not recommend it. In fact, if you are looking at a clientele that's more "business-user" esque you need to think about getting into ASP.NET or J2EE. I would suggest getting a PHP IDE that at least has code completion, as this can help eradicate a ton of PHP bugs. I'm not sure if Notepad++ has this. You also probably want to get a debugger that integrates into your IDE. I know Eclipse had a PHP IDE a few years back, but I'm not sure how good that is these days.
PHP Framework
Never really used any PHP frameworks but that's because I graduated and got a job before I had time to teach myself any of them. :) Go with whatever fits. You probably want to get used to more than one since some projects will fit better with some frameworks.
Ways to deploy site
Defintely, definitely get a local server set-up. You can get a WAMP/LAMP installation set up really easily on your dev machine. As others have said, you probably want to use source control because of Murphy's Law. Personally, I've been using wampServer the last few years as I haven't really been developing that much PHP and that allows me to get a working environment up really quickly. But you may wish to customize your devenv further. But you should definitely test your applications on a dummy server with a dummy database before deploying it to a live server with a real database!
Hope this helps!
Impossible to answer this fully in a single post here, but I'll give you some punchlines:
Proposals - do you guys find these important
Not sure what you mean by that? Sales proposals?
Project Planning - how much planning and mapping out should there be?
Don't spend too much time planning up front - it'll lose its value once you get further down the line. Do plan enough though. Usecases and some interface sketches/wireframes are good value.
Project Management Software - I did a little research before and I like the online portals. Parallels stood out for me.
You'll never find a golden bullet here. Use as little/simple as possible and always go for something with a clear exit route. Less is more. Also, keep in mind that this kind of tool needs to work for very different types of people, at the same time. The tool supports a process though, so keep that in mind - don't let the process be defined by the tool.
Editor tools - I have been using the most basic editor Notepad++. I feel like I should be using something more advanced.
Use what works for you. A good tool is nothing, unless you know how to use it. Likewise, if you know a simple tool well, you can get very far.
PHP Framework - I just got hooked on CodeIgniter.
The exact same applies as with editors.
Ways to deploy site - right now I am doing most of my editing via FTP to the live site. Should I be working on a local copy and then uploading to a test site for the client? Then eventually go to the live server. Are there ways to automate this? (best practice ?)
This should be high priority to change. At the very least, get your source code in a SCM - Subversion is the most mainstream, so I would suggest to use that. Second, get a separate development environment and production site. You develop at your dev setup, and when it's done, you deploy to the live site.
Next step is to look in to testing and automated deployment (google for that). But first things first - Get used to SCM and a separate dev/prod setup.
Finally, if you haven't read it already, Getting Real might be worth your time.
Proposals - Why not. Just don't overdo it. Don't let it become like this big corporate wall between you and your clients. You're small, be personal. That's your strength.
Project Planning - There's three of you? Skip project planning software.
Editor tools - If there's a specific function that Notepad++ doesn't have that you need, then switch editor. But don't switch just to feel more advanced.
PHP Framework - Keep an open mind and use what ever you get hooked on.
Ways to deploy site - Always work against a dev box. Some have test boxes with real-world data to test updates before deploying to the production box. Always version control your code. Whatever tool or method you use to deploy (really a matter of taste) keep a simple checklist with steps to go trough when deploying, and keep it up to date. Do automatic regular backups of your production box and actually do a reset and restore on a test box every now and then, and write down the steps needed to restore from backup.
As an editor, I strongly recommend jEdit. It's cross-platform, speaks many programming languages, has lots of plugins for extended functionality, macro record/save/playback, is actively maintained, and is very configurable.
For deployment, Subversion makes a lot of problems go away. For web development, I typically have two branches; devel and live. All changes are done in devel. When you're ready to publish the changes, a single svn merge operation applies the same changes to the live branch.
Subversion has hooks in its infrastructure to call scripts when certain events happen, like checking in software. A post-commit hook can automatically transfer (scp, ftp, unison, etc) the files onto either the devel server or the live server, depending on which branch the changes were. Now you have nearly immediate and automatic website updates whenever changes are checked it.
Another nice thing about Subversion is that it can hook into Apache to provide a WebDAV interface, so you can change files from anywhere without opening up Subversion itself through your firewall. If you need to make a quickie change from your day job, you can.

PHP Development - lot of (newbie) questions [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I'm a Engineering student and I'm attending a Database and Information Systems class this semester. It's required that I produce a website/application that uses a database, using PHP/PGSQL. My questions are:
which IDE would you recommend?
does anyone have good tips and advices for a new developer?
it would help me (a lot) to develop this project attending some more "academic" aspects of the subject, such as the Entity/Association Model, etc. Are there any good tools to help structure my work?
Thanks!
EDIT: A few notes:
I forgot to ask one last thing, I tried installing BitNami's WAPP Stack. Does anyone know how good and/or reliable it is?
I'm actually working under Windows Vista Business (new laptop :S ). Would you recommend develloping under Linux for any specific reason?
which IDE would you recommend?
Anything that supports remote debugging. You will save yourselves hours and hours and learn so much quicker if you can actually step through your code. It always amazes me that more people don't use good debugging tools for PHP. The tools are there, not using them is crazy. FWIW I've always been a devotee of Activestate Komodo - fantastic product.
does anyone have good tips and advices for a new developer?
get test infected. It will stand you in good stead in the future, and will force you to think about design issues properly. In fact the benefits are many and the drawbacks few.
learn to refactor, and make it part of your development "rhythm".
related to this is: think ahead, but don't programme ahead. Be aware that something you are writing will probably need to be bubbled up the class hierarchy so it is available more generically, but don't actual do the bubbling up till you need it.
it would help me (a lot) to develop this project attending some more "academic" aspects of the subject, such as the Entity/Association Model, etc. Are there any good tools to help structure my work?
Learn about design patterns and apply the lessons you have learned from them. Don't programme the "PHP4" way.
I forgot to ask one last thing, I tried installing BitNami's WAPP Stack. Does anyone know how good and/or reliable it is?
No idea, but if you have the time I'd avoid a prebuilt stack like WAMPP. It's important to understand how the pieces fit together. However, if you're running on Windows, you may not have time and your energy could be better focused on writing good code than working out how to install PHP, PostgreSQL and Apache.
I'm actually working under Windows Vista Business (new laptop :S ). Would you recommend developing under Linux for any specific reason?
Yes I would. Assuming you are deploying on Linux (if you are deploying on Windows I'd be asking myself some serious questions!), then developing in the same environment is incredibly useful. I switched for that reason in 2005 and it was one of the most useful things I did development wise. However if you're a total *nix newbie and are under tight time constraints maybe stick with what you know. If you have time to try things out, you'll find it pretty easy to get up and running with a good modern Linux desktop distro and the development work will fly along.
This is probably the only time in your career when you have the full freedom to chose what tools to use, so make the best use of it. Learn some of the classic tools that will go with you a long long way.
So instead of using an IDE which you'll probably do all your professional life get a taste of using old school editors like vim/emacs. One advantage here is that the IDE will not hide all the details on getting your project to work, knowing the full technology stack is always a plus.
For any technology that you'll be using try and get a good broad perspective before diving in to the implementation details, so for PHP I would suggest getting a grasp of XHTML, CSS and Javascript including libraries like jQuery; Object Relational Mapping (Take a look at Ruby on Rails, CakePHP, Django and SQL Alchemy) and Model View Controller Frameworks on various platforms.
For PGSQL in addition to normalization try to get into the depths of information_schema and the transaction isolation levels and when they're useful.
Also important is understanding how the HTTP protocol works at a low level and how highly scalable websites can be built using HTTP.
Rather than relying on tools I would say that just create a reading list on the topics mentioned above and that would automatically structure your thought process to take into account these kind of issues.
IDE: I reccomend PSPad for its great FTP features and syntax highlighting for PHP
Tip: Go through the PHP documentation for mysql or whatever database you are using, the PHP documentation is the best tool you have for learning it.
Tip: Keep data simple, its always mutable to something else, for example, store time with unixtimestamp, since php has great functionality with the date() function to turn it into anything you want.
EDIT to add linux vs windows tips
I have developed on both Windows and Linux machines and i have both had a PHP server on Linux and Windows and for my type of developing (CMS's and Websites on those CMS's) i prefer developing on Windows and hosting on Linux. This is due to the stability of Linux and the Tools i can use reliably on Windows (Photoshop mainly)
I would recommend a plain text editor rather than an IDE. You should use one with syntax highlighting such as Notepad++.
Tips:
Use Firefox
Play around with some test databases. The biggest mistake made when teaching or learning databases is to focus on theory without actual data.
A good IDE for PHP is PDT, an Eclipse plugin.
My recommendations:
No IDE - just a basic syntax-highlighting text editor (I use jEdit)
Understand XSS and SQL injection
There are lots of good frameworks under PHP that will help
I recommend you netbeans .its free. it is available for all platforms, and mostly it is good for editing php, jsp, java, css, html, ...
Good for SVN, mercurial, Plus you can integrate it easyly with kenai.com...
it helps with the IntelliSense kind of pop up.
believe me, i'm using it for php development and its the best suited ide i can find...
IDE: Quanta+
tip: don't use a template library over a template language (PHP)
tip: MVC is a design and mentality issue, not a library
The best editors you get on windows are Notepad++ and Eclipse. both good, but can't hold a candle to Kate and Quanta+. for that alone, i'd ditch windows. Also, it's nice to have both the development and a real test environment on the same system, and even if most OSS is available on windows, they're always a square peg on a round hole.
ide: vim + (firefox+firebug)
using an ide with php, for the most part, is overkill
other tools: pgadmin3
design your tables so they are easy to query
if you have an extra box, i would put linux on it if you want to try it out. Ubuntu is a good started distro with a simple LAMP set up process. I wouldnt do anything to that vista laptop though, because it will allow you to test in IE and firefox.
Have you looked at Delphi for PHP (<http://www.codegear.com/products/delphi/php>) ?
Joe Stagner of Microsoft really likes Delphi for PHP.
He says it here: "[Delphi for PHP] 2.0 is the REAL DEAL and I LOVE IT !"

Categories